欢迎来到天天文库
浏览记录
ID:55766491
大小:34.00 KB
页数:19页
时间:2020-06-06
《单链表完整算法.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、//包含头文件#include#include#include//为结点数据类型和结构体类型起别名typedefintdatatype;typedefstructLinkNode{datatypedata;//数据域structLinkNode*next;//指针域存放下一个结点的地址}LNode,*LinkList;LinkListL;//单链表的头指针//1.用头插法创建单链表LinkListCreateListHead(intn){//创建头结点LNode*L=(LNode*)malloc(sizeof
2、(LNode));L->next=NULL;//设置指针域为空LinkListp;//p指向新结点for(inti=n;i>0;i--)//先插入最后一个结点,插入次序与逻辑次序相反{//生成新结点p=(LNode*)malloc(sizeof(LNode));//从键盘输入新结点的值printf("请输入要插入第%d结点的值:",i);scanf("%d",&p->data);p->next=L->next;//让L原来的后继结点成为p的后继结点L->next=p;//p成为L新的后继结点}returnL;//返回单链表的头指针}//2.用尾插法创建单链表Li
3、nkListCreateListTail(intn){//生成头结点L=(LNode*)malloc(sizeof(LNode));L->next=NULL;//设置指针域为空//p指向新结点,q指向尾结点LinkListp,q=L;//依次在末尾插入n个结点for(inti=1;i<=n;i++){//生成新结点pp=(LNode*)malloc(sizeof(LNode));//从键盘输入新结点的值printf("请输入第%d个结点的值:",i);scanf("%d",&p->data);p->next=NULL;//新结点(也是尾结点)的指针域为空//把新
4、结点链接到单链表的末尾q->next=p;//让q指向新的尾结点q=p;}returnL;//返回单链表的头指针}//3.显示单链表中的元素值voidShowList(LinkListL){if(L==NULL
5、
6、L->next==NULL){printf("单链表为空。");return;}LinkListp=L;//指针p首先指向头结点while(p->next!=NULL)//当指针p没有到达尾结点时{p=p->next;//指针后移一个结点printf("%d",p->data);//输出结点数据域的值}}//4.求单链表的长度(结点的个数)intG
7、etLength(LinkListL){LNode*p=L;/*p先指向头结点*/intn=0;//n代表除头结点外的结点个数while(p->next!=NULL){//当指针p没有到达尾结点时p=p->next;//指针后挪一个结点n++;//结点个数+1}returnn;//返回结点的个数}//5.按序号查找:在单链表中查找第i个结点LinkListLocateElemByIndex(LinkListL,inti){LinkListp=L;//指针p先指向头结点,负责后移intj=0;//j用来计算到达结点的序号if(L==NULL
8、
9、L->next==NUL
10、L){printf("单链表为空。");returnNULL;}//p指针后移的条件:p不是尾结点,而且jnext!=NULL&&jnext;//p指针后移j++;//j递增}if(j==i)//找到第i个结点时:j==i{returnp;//返回第i个结点的地址}else{returnNULL;//第i个结点不存在,返回NULL}}//6.按值查找:在单链表中查找值为e的结点LinkListLocateElemByData(LinkListL,datatypee){LinkListp=L;//指针p先指向头结点,负责后移
11、if(L==NULL
12、
13、L->next==NULL){printf("单链表为空。");returnNULL;}//p指针后移的条件:p不是尾结点,而且p->data!=ewhile(p->next!=NULL&&p->data!=e){p=p->next;//p指针后移}//找到值为e的结点if(p->data==e){returnp;//返回结点的地址}else{returnNULL;//结点不存在,返回NULL}}//7.在单链表的第i个位置插入值为e的结点(在第i-1个结点后面插入新结点)voidInsertByIndex(LinkListL,int
此文档下载收益归作者所有