C++实现简单链表

来源:互联网 发布:申请mac邮箱地址 编辑:程序博客网 时间:2024/06/14 09:23

#include<iostream.h>
#include<stdlib.h>
#include<stdio.h>
typedef struct student
{
 int data;
 struct student *next;
}node;
int length(node *head)
{
 int n=0;
 node *p;
 p=head;
 while(p!=NULL)
 {
  p=p->next;
  n++;
 }
 return n;
}
node *Create(void)
{
 node *p,*s,*head;
 int x;
 int cycle=1;
 head=(node*)malloc(sizeof(node));
 p=head;
 while(cycle)
 {
  cout<<"please input the data"<<endl;
  cin>>x;
 
  //scanf("%d",&x);
  if(x!=0)
  {
     
   s=(node*)malloc(sizeof(node));   
   s->data=x;   
   p->next=s;
   p=s;
  
  }
  else
  {
   cycle=0;
  }
 }
 head=head->next;
 p->next=NULL;
 return (head);
}
void Print(node *head)
{
 node *p;
 int n;
 n=length(head);
 p=head;
 if(head!=NULL)
 {
  while(p!=NULL)
  {
   cout<<p->data;
   p=p->next;
  }
 }
}
node *del(node *head,int num)
{
 node *p1,*p2;
 p1=head;
 while(num!=p1->data && p1->next!=NULL)
 {
  p2=p1;
  p1=p1->next;
 }
 if(num==p1->data)
 {
  if(p1==head)
  {
   head=p1->next;
   free(p1);
  }
     else
  {
   p2->next=p1->next;
  }
 }
 else
 {
  cout<<"没有找到这个节点!"<<endl;
 }
 return (head);
}
node *insert(node *head,int num)
{
 node *p0,*p1,*p2;
 p1=head;
 p0=(node*)malloc(sizeof(node));
 p0->data=num;
 while(p0->data>p1->data && p1->next!=NULL)
 {
  p2=p1;
  p1=p1->next;
 }
 if(p0->data<=p1->data)
 {
  if(head==p1)
  {
   p0->next=p1;
   head=p0;
  }
  else
  {
   p2->next=p0;
   p0->next=p1;
  }
 }
 else
 {
  p1->next=p0;
  p0->next=NULL;
 }
 return (head);
}

 

void main(void)
{
 node *head;
 int delnum,insertnum;
 head=Create();
 Print(head);
 cin>>delnum;
 //scanf("%d",&delnum);
 head=del(head,delnum);
 Print(head);
 cin>>insertnum;
 //scanf("%d",&insertnum);
 head=insert(head,insertnum);
 Print(head);
}


0 0
原创粉丝点击