C语言链表基本操作范本模板.docx

上传人:b****5 文档编号:5724194 上传时间:2022-12-31 格式:DOCX 页数:8 大小:15.86KB
下载 相关 举报
C语言链表基本操作范本模板.docx_第1页
第1页 / 共8页
C语言链表基本操作范本模板.docx_第2页
第2页 / 共8页
C语言链表基本操作范本模板.docx_第3页
第3页 / 共8页
C语言链表基本操作范本模板.docx_第4页
第4页 / 共8页
C语言链表基本操作范本模板.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

C语言链表基本操作范本模板.docx

《C语言链表基本操作范本模板.docx》由会员分享,可在线阅读,更多相关《C语言链表基本操作范本模板.docx(8页珍藏版)》请在冰豆网上搜索。

C语言链表基本操作范本模板.docx

C语言链表基本操作范本模板

//链表操作:

建立、插入、删除、查找、倒置、删除等基本操作

//喜洋洋制作

#include〈stdio.h〉

#include〈stdlib.h>

typedefstructLNode

intdata;

structLNode*next;

}LNode,*Llist;

LNode*creat_head();//创建一个空表

voidcreat_list(LNode*,int);//创建一个长度为n的线性链表

voidinsert_list(LNode*,int,int);//插入一个元素

intdelete_list(LNode*,int);//删除一个元素

intfound_list(LNode*,int);//链表查询

voidreverse(LNode*);//倒置整个链表

voiddelete_whole(LNode*);//删除整个链表

voidprint_list(LNode*);//打印链表

main()

LNode*head;

intn,n2;

intx,i;

intb;

chartemp1,temp2;

head=creat_head();

printf("请输入链表的节点个数n=");

scanf(”%d”,&n);

printf(”\n请输入数据:

\n”);

creat_list(head,n);//创建链表

print_list(head);

printf(”\n*********************************************************\n");

printf(”\n下面进行链表插入元素\n");

printf(”\n请输入您需要插入的元素x=”);

scanf(”%d”,&x);

printf(”\n请输入即将插入的位置i=");

scanf(”%d",&i);

insert_list(head,x,i);//插入元素

print_list(head);

printf(”\n*********************************************************\n");

printf("\n下面进行链表删除元素\n");

printf("\n请输入即将删除元素的位置:

i=");

scanf(”%d”,&i);

b=delete_list(head,i);//删除元素

print_list(head);

printf(”\n\n成功删除元素:

%d”,b);

printf("\n*********************************************************\n”);

printf(”\n下面进行链表查询\n”);

printf(”\n请输入即将查询的元素:

x=");

scanf("%d",&n2);

if(found_list(head,n2)〉0)//链表查询

printf("找到了,在第%d的位置上",found_list(head,n2));

else

printf(”没有找到!

");

printf("\n*********************************************************\n”);

printf("\n是否倒置整个链表?

Y/N\n");

fflush(stdin);

scanf(”%c",&temp1);

if(’Y’==temp1)//倒置链表

{

reverse(head);

print_list(head);

}

printf("\n*********************************************************\n");

printf("\n是否删除整个链表?

Y/N\n");

fflush(stdin);

scanf("%c”,&temp2);

if(’Y'==temp2)//删除链表

{

delete_whole(head);

printf("\n成功删除整个链表\n");

}

}

//创建一个空链表

LNode*creat_head()

LNode*p;

p=(Llist)malloc(sizeof(LNode));

if(NULL==p)

printf(”内存申请失败!

");

else

p->next=NULL;

return(p);

}

}

//创建一个长度为n的线性链表

voidcreat_list(LNode*head,intn)

LNode*p,*q;

inti;

p=head;

for(i=1;i〈=n;i++)

{

q=(Llist)malloc(sizeof(LNode));

if(NULL==p)

printf(”内存申请失败!

”);

else

{

printf(”data:

”);scanf(”%d”,&q—>data);

q—〉next=NULL;

p—>next=q;

p=q;

}

}

//插入一个元素

voidinsert_list(LNode*head,intx,inti)

intj=0;

LNode*p,*s;

p=head;

while((p!

=NULL)&&(j〈i—1))

p=p—〉next;

j++;

}

if(p==NULL)exit(0);

s=(Llist)malloc(sizeof(LNode));

if(NULL==p)

printf(”内存申请失败!

”);

else

s-〉data=x;

s—〉next=p-〉next;

p—>next=s;

}

//删除一个元素

intdelete_list(LNode*head,inti)

LNode*p,*q;

intj=0;

intx;

p=head;

while((p!

=NULL)&&(j

{

p=p->next;

j++;

if(p==NULL)exit(0);

q=p—〉next;

p->next=q-〉next;

x=q—>data;

free(q);

q=NULL;

return(x);

//删除整个链表

voiddelete_whole(LNode*head)

LNode*p,*q;

p=head;

while(p!

=NULL)

q=p—>next;

free(p);

p=q;

//倒置链表

voidreverse(LNode*head)

{

LNode*p,*s,*t;

p=head;

s=p-〉next;

while(s-〉next!

=NULL)//主要置换过程

t=s-〉next;

s—>next=p;

p=s;

s=t;

}

s—>next=p;

head—>next—〉next=NULL;//收尾

head->next=s;//赋头

}

//打印链表

voidprint_list(LNode*head)

{

LNode*p;

for(p=head—>next;p!

=NULL;)

printf(”%d",p-〉data);

p=p—〉next;

}

//链表查询

intfound_list(LNode*head,intn)

{

LNode*p;

inti=1;

for(p=head-〉next;p!

=NULL;)

if(n==p—>data)

returni;

i++;

p=p—>next;

if(NULL==p)

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1