建立一个单链表,并实现插入、删除、查找操作。/验证实验/

#include
typedef int ElemType; 
typedef struct lnode
{
     ElemType data;
     struct lnode *next;
}Lnode,*Linklist; 






void CreateList(Linklist &L,int n)
{   
L=new Lnode; 
L->data=NULL;
L->next=NULL;
Linklist rear=L;//定义指向Lnode结构体指针rear,并指向L
cout<<"请输入"<    for (int i=0; i    {   
Linklist s=new Lnode; 
        cin>>s->data;
        rear->next=s;
rear=s;


    }
rear->next=NULL;
 }






void Insert(Linklist &L,int i, ElemType  x)
{       
Linklist p=L;
        int j=0;    
     while (j     {
          p=p->next; 
          j++;
     }
   if (!p) cout<<"位置不合理";//如果i-1已经超出链表的范围
   else
   {   Linklist s=new Lnode;   
       s->data=x;  
       s->next=p->next;       
       p->next=s;
   }
}






void Delete(Linklist &L,int i)
{   Linklist p=L;
int j=0;  
    while (j    {
         p=p->next;
         j++;
     }
   if (p||p->next!=NULL) //因为删除的是后面的元素,所以首先判断p不为空及不指向最后一个元素
   {       Linklist q=new Lnode;
           q=p->next->next;
      p->next=q; //直接连上第i+1元素就ok
   }
   else cout<<"位置不合理"; 
 }




int Find(Linklist &L,int i) 
{
Linklist p=L;
     int j=0;  
     while (p&&j {
p=p->next; 
         j++;
}
     if (!p)  cout<<"Error";
else cout<<"存在你要找的值为"<     return p->data;  
}






 void Putout(Linklist &L)
{
   Linklist p=L->next;
   if(!p) cout<<"没有数据存入";
   while(p!=NULL)
{
cout<data<<" ";
    p=p->next;
}
    cout<<'\n';
}




void main()
{
Linklist K;
int i,x,y;
cout<<"请输入您要存储的元素个数:"<<'\n';
cin>>i;
CreateList(K,i);
Putout(K);
while(1)
{   cout<<"请输入您要进行的操作1插入2删除3查找4退出"<<'\n';
cin>>i;


if(i==1) 
   {
  cout<<"请输入你要插入的位置x和要插入的元素y:"<<'\n';
       cin>>x>>y;
       Insert(K,x,y);
       Putout(K);
       continue;
}


    if(i==2)
{
cout<<"请输入你要删除的元素位置x:"<<'\n';
    cin>>x;
    Delete(K,x);
    Putout(K); 
    continue;
}


    if(i==3)
{cout<<"请输入你要查找的元素:"<<'\n';
     cin>>x; 
     Find(K,x); 
     Putout(K); 
     continue;}
    
if(i==4) break;

else 
{cout<<"你的输入有误"<<'\n';
continue;}
}
}









你可能感兴趣的:(数据结构实验)