数据结构单链表及插入删除C语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构单链表及插入删除C语言

#include

#include

typedef struct LinkLode{

int data;

struct LinkLode* link;

}LinkLode;

int length;

void show(LinkLode* first)

{

first=first->link;

while(first->link!=NULL)

{

printf("%d ",first->data);

first=first->link;

}

printf("%d\n",first->data);

}

LinkLode* newLode(int data)

{

LinkLode *newLode;

newLode=(LinkLode *)malloc(sizeof(LinkLode));

newLode->data=data;

newLode->link=NULL;

return newLode;

}

void createList(LinkLode* first)

{

LinkLode*s1,*s2;

int i=2;

s2=newLode(1);

first->link=s2;

s1=s2;

for(;i<11;i++)

{

s2=newLode(i);

s1->link=s2;

s1=s2;

}

length=10;

s1=first->link;

while(s1->link!=NULL)

{

printf("%d ",s1->data);

s1=s1->link;

}

printf("%d\n",s1->data);

}

void intList(int i,int data,LinkLode* first)

{

LinkLode *s1=first,*s2;

int i2=0;

s2=newLode(data);

if(i>=0&&i<=length)

{

while(i2

{

s1=s1->link;

i2++;

}

s2->link=s1->link;

s1->link=s2;

length++;

printf("插入成功\n");

show(first);

}

else

printf("插入失败\n");

}

void delList(int i,LinkLode* first)

{

LinkLode* s2=first,*s1;

int i1=0;

if(i>0&&i<=length)

{

while(i1

{

s1=s2;

s2=s2->link;

i1++;

}

printf("删除的数为:%d,地址为%p\n",s2->data,s2);

s1->link=s2->link;

free(s2);

length--;

show(first);

}

else

printf("删除失败\n");

}

int main()

{

LinkLode* first;

char c1=NULL,c2;

int i,data;

first = (LinkLode *)malloc(sizeof(LinkLode));

first->data=-10;

first->link=NULL;

createList(first);

while(c1!='s')

{

printf("插入请输入i,删除输入d,停止输入s\n");

scanf("%c",&c1);

if(c1=='i')

{

printf("请输入插入的数据和插入在第几个数后面,以空格隔开\n");

scanf("%d%d",&data,&i);

intList(i,data,first);

c2=getchar();

}

if(c1=='d')

{

printf("请输入删除第几个数据\n");

scanf("%d",&i);

delList(i,first);

c2=getchar();

}

}

return 0;

}

相关文档
最新文档