单链表创建及其插入,删除,逆序

来源:互联网 发布:中国网络的发展历程 编辑:程序博客网 时间:2024/06/05 19:25
#include <iostream.h>
struct node
{
    char data;
    node *next;
};
 
void Output(node *list);
void Init(node *list)
{
    // list->data='0';
    list->next=NULL;
}
 
void CreateList(node *list)
{
    int a=1;
    char x;
       node *p,*s;
    p=list;
    cout<<"输入数据,#结束"<<endl;
    while(a)
    {
        cin>>x;
 
        if(x!='#')
        {
            s=new node;
            s->data=x;
            p->next=s;
            s->next=NULL;
            p=s;
        }
        else a=0;
 
    }
}
 
void Insert(node *list,char insertnum)
{
    char z;
    node *p,*s;
    p=list;
    Output(list);
    cout<<"请指出需要将数据插入哪个数据之后:"<<endl;
    cin>>z;
    s=new node;
    s->data=insertnum;
 
    while(p->data!=z)
    {
      p=p->next;
    }
    if(p->next==NULL)
    {
      p->next=s;
      s->next=NULL;
    }
    else
    {
        s->next=p->next;
        p->next=s;
    }
    cout<<"插入之后结果为:"<<endl;
    Output(list);
}
 
void Delete(node *list)
{
    char z;
    node *p;
    p=list;
    Output(list);
    cout<<"请指出需要将哪个数据删除:"<<endl;
    cin>>z;
    while(p->next->data!=z)
    {
        p=p->next;
    }
    if(p->next->next==NULL)
    {
 
        p->next=NULL;
    }
    else
    {
        p->next=p->next->next;
    }
    Output(list);
}
//单链表的逆序
void reverse(node *list)
{
  node *p,*q,*r;
  q=NULL;
  p=list->next;
  while(p)
  {
    r=p->next;
    p->next=q;
    q=p;
    p=r;
  }
   list->next=q;
   Output(list);
}
 
void Output(node *list)
{
node *q;
q=list->next;
while(q->next)
{
    cout<<q->next->data<<"  ";   
    q=q->next;
 
}
  }
 
void main()
{
    node *list=new node;
    Init(list);
    CreateList(list);
    //Output(list);   
    //Insert(list,'5');
    //Delete(list);
    reverse(list);
}
0 0
原创粉丝点击