您的位置:首页 > 编程语言 > C语言/C++

C++实现简单链表

2014-05-15 20:49 363 查看
#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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: