[2017年整理]数据结构单链表代码

上传人:豆浆 文档编号:916453 上传时间:2017-05-21 格式:DOC 页数:5 大小:29KB
返回 下载 相关 举报
[2017年整理]数据结构单链表代码_第1页
第1页 / 共5页
[2017年整理]数据结构单链表代码_第2页
第2页 / 共5页
[2017年整理]数据结构单链表代码_第3页
第3页 / 共5页
[2017年整理]数据结构单链表代码_第4页
第4页 / 共5页
[2017年整理]数据结构单链表代码_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《[2017年整理]数据结构单链表代码》由会员分享,可在线阅读,更多相关《[2017年整理]数据结构单链表代码(5页珍藏版)》请在金锄头文库上搜索。

1、#include#include#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define NULL 0#define OVERFLOW -2typedef int status;typedef int ElemType;typedef struct LNodeElemType data;struct LNode *next;LNode,*LinkList;status InitList_Link(LinkList &L)/构造空的链表-L=(LinkList)malloc(sizeof(LNode);if(!L) exit(

2、 OVERFLOW);L-next=NULL;return OK;status ListInsert_Link(LinkList &L,int i,ElemType e)/在 L 中第 i 个位置插入元素 e-LinkList p=L;int j;while(p & jnext;+j;if(!p | ji-1) return ERROR;/不存在 P 或者指向的位置超过的 iLinkList s=(LinkList)malloc(sizeof(LNode);/创建新的节点s-data=e;s-next=p-next;p-next=s;return OK;status DestroyList_L

3、ink(LinkList &L,int i,ElemType &e)/在 L 中删除第 i 个元素,由 e 返回值LinkList p=L; int j=0;while(p-next & jnext;+j;if(!(p-next) |ji-1 )return ERROR;LinkList q=p-next;/重新定义指针 使其指向的是所要删除的位置p-next=q-next;e=q-data;free(q);return OK;status CreateList_Link(LinkList &L,int n)/逆序输入 n 个元素的值,建立带表头的单链表 L/LinkList L;L=(Lin

4、kList)malloc(sizeof(LNode);L-next=NULL;/先建立的是一个带头结点的空的单链表for(int i=n;i0;i-)LinkList p;/生成新结点 p=(LinkList)malloc(sizeof(LNode);scanf(%d,&p-data);p-next=L-next;/插入表头L-next=p;return OK;void print(LinkList &L)while(L-next !=NULL)printf(%d ,L-next-data);L=L-next;printf(n);status DestroyList_Link(LinkList

5、 &L)/销毁链表LinkList p,q;p=L;q=L;/同时指向带头结点while(p-next)/如果的 L 链表存在数值q=p;p=p-next;free(q);return OK;status ClearList_Link(LinkList &L)/清空链表LinkList p=L-next;while(p)p-data=NULL;p=p-next;/指针下移return OK;status ListEmpty_Link(LinkList L)LinkList p=L;if(p-next) return TRUE;else return FALSE;int ListLength_L

6、ink(LinkList L)int len=0;LinkList p=L;while(p-next)len+;p=p-next;return len;void MergeList_Link(LinkList &La,LinkList &Lb,LinkList &Lc)/合并两个有序的单链表LinkList pa,pb,pc;pa=La-next; pb=Lb-next;Lc=pc=La;/用 La 的头结点作 Lc 的头结点while(pa & pb)if(pa-data data )pc-next=pa; pc=pa;pa=pa-next;elsepc-next=pb;pc=pb;pb=p

7、b-next;pc-next=pa?pa:pb;/插入剩余free(Lb);/*删除线性表中重复的元素 */void main()LinkList L;InitList_Link(L);CreateList_Link(L,5);printf(为删除前的表是:);print(L);LinkList p,s;p=L-next;s=L-next-next;while(p)while(s)if(p-data=s-data) p-next=s-next;free(s);s=s-next;p=p-next;s=p-next;printf(删除重复元素后的表是:);print(L);DestroyList_Link(L);/*void main()LinkList La,Lb,Lc;/int e;InitList_Link(La);InitList_Link(Lb);CreateList_Link(La,5);CreateList_Link(Lb,8);MergeList_Link(La,Lb,Lc);/DestroyList_Link(L);/DestroyList_Link(L,2,e);/printf(%d,e);print(La);print(Lb);print(Lc);printf(n);*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号