⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 数据结构(1).cpp

📁 以链表的形式实现货物的管理,包括链表的创建,插入,删除,查询,更新等.
💻 CPP
字号:
#include <iostream>
using namespace std;
#include<string.h>
typedef struct data{
	char name[20];
	char type[20];
	float price;
	int num;
}Data;
typedef struct LNODE
{Data datal;
 struct LNODE *next;
}LNODE,*LinkList;

  
//下面是各个函数:




void Cin(LinkList &head)  //输入函数
{
	int i=0; 
    int n;
	LNODE *p,*l,*q1;
 
	cout<<"输入要输入的数据组数:"<<endl;
	 cin>>n;

	for(i=0;i<n;i++)
	{
		p=new LNODE;
		p->next=NULL;
		cout<<"输入要输入的具体数据:"<<endl;
		cin>>p->datal.name>>p->datal.num>>p->datal.price>>p->datal.type;
		if(head==NULL)
		{head=p;p->next=NULL;
		
		}
	else
		{l=head;

			while(p->datal.price>l->datal.price)
			{
			q1=l;
			if(l->next!=NULL)
			 l=l->next;
			else{
				l->next=p;
				
				break;
			}
			}
		if(p->datal.price<=l->datal.price)
			{
			if(head==l)
			     head=p;
			else 
		  
				q1->next=p;
				p->next=l;
				
			}//if

		
		l=head;

		}
	}
	

}
//以上是输入函数

void Cout(LinkList head)
{ LNODE *p;
  cout<<"货物清单如下:"<<endl;
   p=head;
   cout<<"name"<<"    "<<"num"<<"    "<<"price"<<"    "<<"type"<<endl;
   while(p!=NULL)
   {cout<<p->datal.name<<"        "<<p->datal.num<<"        "<<p->datal.price<<"       "<<p->datal.type<<endl;
     p=p->next;
   }
   
}
//以上是Cout函数
void Insert(LinkList &head)
	{LNODE *p,*l,*q1;
	p=new LNODE;
		p->next=NULL;
	cout<<"输入要插入的数据:"<<endl;
	cin>>p->datal.name>>p->datal.num>>p->datal.price>>p->datal.type;
		if(head==NULL)
		{head=p;p->next=NULL;
		}
		else
		{l=head;

			while(p->datal.price>l->datal.price)
			{
			q1=l;
			if(l->next!=NULL)
			 l=l->next;
			else{
				l->next=p;
				
				break;
			}
			}
			if(p->datal.price<=l->datal.price)
				{
					if(head==l)
					head=p;
			else 
		  
				q1->next=p;
				p->next=l;
				
				}//if
			l=head;
		}

	Cout(head);
		
	}
	

//以上是Insert函数
void Delete(LinkList &head)
{  LNODE *t,*s;
    char str[20];
   cout<<"输入要删除的货物的名称:"<<endl;
   cin>>str;
  if(strcmp(str,head->datal.name)==0)
	  head=head->next;
  else
	{		s=head;
			while((strcmp(str,s->datal.name)!=0)&&(s->next!=NULL))
			{t=s;
			s=s->next;
			}
			if((strcmp(str,s->datal.name))==0)
			{if(s->next!=NULL)
				t->next=s->next;
			else t->next=NULL;
			}
  }
  Cout(head);

}
//以上是删除函数
void New(LinkList &head)
{  LNODE *s,*p,*t;
    p=new LNODE;
    cout<<"输入要更新后的数据:"<<endl;
	cin>>p->datal.name>>p->datal.num>>p->datal.price>>p->datal.type;
	if(strcmp(p->datal.name,head->datal.name)==0)
	{s=head;head=p;head->next=s->next;}
	else
	{s=head;
		while(strcmp(p->datal.name,s->datal.name)!=0)
		{t=s;
		s=s->next;
		}
		t->next=p;
		p->next=s->next;
	}
	Cout(head);
}
//以上是更新函数
void Search(LinkList head)
{  LNODE *s;
   char p[20];
   cout<<"输入要查询的家电的名称:"<<endl;
   cin>>p;
   s=head;
   if(s==NULL) 
    cout<<"出错啦!笨蛋!"<<endl;
	
   while(strcmp(p,s->datal.name)!=0) s=s->next;
   cout<<"查询结果为:"<<endl;
	cout<<s->datal.name<<"   "<<s->datal.num<<"   "<<s->datal.price<<"    "<<s->datal.type<<endl;
	
   
   
}//以上是查找函数
 
void main()
{ //主函数
  cout<<"欢迎进入货物管理系统:"<<endl<<endl;

  LinkList head;
  head=NULL;
  Cin(head);
 int a;
 
 do
	{	
 cout<<"如果要输出货物清单请键入1;"<<endl;
 cout<<"如果要插入货物项目请键入2;"<<endl;
 cout<<"如果要删除货物项目请键入3;"<<endl;
 cout<<"如果要更新货物清单请键入4;"<<endl;
 cout<<"如果要查询货物项目请键入5;"<<endl;
 cout<<"如果要退出请键入6;"<<endl;
 cin>>a;
 
		switch (a)
		{case 1: Cout(head);break;
		 case 2: Insert(head);break;
		 case 3: Delete(head);break;
		 case 4: New(head);break;
		 case 5: Search(head);break;
		 case 6: { cout<<"谢谢您使用本系统,有不足之处敬请谅解!!^.^  ^.^  ^.^ ^.^  ^.^  ^.^ ^.^  ^.^  ^.^ ^.^  ^.^  ^.^"<<endl;  break;}
		  
		 }
		
	}
while(a!=6);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -