链表文档格式.docx

上传人:b****2 文档编号:3180352 上传时间:2023-05-01 格式:DOCX 页数:11 大小:16.56KB
下载 相关 举报
链表文档格式.docx_第1页
第1页 / 共11页
链表文档格式.docx_第2页
第2页 / 共11页
链表文档格式.docx_第3页
第3页 / 共11页
链表文档格式.docx_第4页
第4页 / 共11页
链表文档格式.docx_第5页
第5页 / 共11页
链表文档格式.docx_第6页
第6页 / 共11页
链表文档格式.docx_第7页
第7页 / 共11页
链表文档格式.docx_第8页
第8页 / 共11页
链表文档格式.docx_第9页
第9页 / 共11页
链表文档格式.docx_第10页
第10页 / 共11页
链表文档格式.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

链表文档格式.docx

《链表文档格式.docx》由会员分享,可在线阅读,更多相关《链表文档格式.docx(11页珍藏版)》请在冰点文库上搜索。

链表文档格式.docx

returnOK;

}

typedefstructNode

ElemTypedata;

structNode*next;

}Node;

typedefstructNode*LinkList;

/*定义LinkList*/

/*初始化顺序线性表*/

StatusInitList(LinkList*L)

{

*L=(LinkList)malloc(sizeof(Node));

/*产生头结点,并使L指向此头结点*/

if(!

(*L))/*存储分配失败*/

returnERROR;

(*L)->

next=NULL;

/*指针域为空*/

/*初始条件:

顺序线性表L已存在。

操作结果:

若L为空表,则返回TRUE,否则返回FALSE*/

StatusListEmpty(LinkListL)

if(L->

next)

returnFALSE;

else

returnTRUE;

将L重置为空表*/

StatusClearList(LinkList*L)

LinkListp,q;

p=(*L)->

next;

/*p指向第一个结点*/

while(p)/*没到表尾*/

{

q=p->

free(p);

p=q;

}

/*头结点指针域为空*/

返回L中数据元素个数*/

intListLength(LinkListL)

inti=0;

LinkListp=L->

while(p)

i++;

p=p->

returni;

顺序线性表L已存在,1≤i≤ListLength(L)*/

/*操作结果:

用e返回L中第i个数据元素的值*/

StatusGetElem(LinkListL,inti,ElemType*e)

intj;

LinkListp;

/*声明一结点p*/

p=L->

/*让p指向链表L的第一个结点*/

j=1;

/*j为计数器*/

while(p&

&

j<

i)/*p不为空或者计数器j还没有等于i时,循环继续*/

{

p=p->

/*让p指向下一个结点*/

++j;

if(!

p||j>

i)

/*第i个元素不存在*/

*e=p->

data;

/*取第i个元素的数据*/

顺序线性表L已存在*/

返回L中第1个与e满足关系的数据元素的位序。

*/

/*若这样的数据元素不存在,则返回值为0*/

intLocateElem(LinkListL,ElemTypee)

while(p)

if(p->

data==e)/*找到这样的数据元素*/

return0;

顺序线性表L已存在,1≤i≤ListLength(L),*/

在L中第i个位置之前插入新的数据元素e,L的长度加1*/

StatusListInsert(LinkList*L,inti,ElemTypee)

LinkListp,s;

p=*L;

j<

i)/*寻找第i个结点*/

}

if(!

p||j>

i)

s=(LinkList)malloc(sizeof(Node));

/*生成新结点(C语言标准函数)*/

s->

data=e;

next=p->

/*将p的后继结点赋值给s的后继*/

p->

next=s;

/*将s赋值给p的后继*/

删除L的第i个数据元素,并用e返回其值,L的长度减1*/

StatusListDelete(LinkList*L,inti,ElemType*e)

while(p->

next&

i)/*遍历寻找第i个元素*/

(p->

next)||j>

q=p->

next=q->

/*将q的后继赋值给p的后继*/

*e=q->

/*将q结点中的数据给e*/

free(q);

/*让系统回收此结点,释放内存*/

依次对L的每个数据元素输出*/

StatusListTraverse(LinkListL)

visit(p->

data);

\n"

);

/*随机产生n个元素的值,建立带表头结点的单链线性表L(头插法)*/

voidCreateListHead(LinkList*L,intn)

inti;

srand(time(0));

/*初始化随机数种子*/

*L=(LinkList)malloc(sizeof(Node));

next=NULL;

/*先建立一个带头结点的单链表*/

for(i=0;

i<

n;

i++)

p=(LinkList)malloc(sizeof(Node));

/*生成新结点*/

data=rand()%100+1;

/*随机生成100以内的数字*/

next=(*L)->

next=p;

/*插入到表头*/

/*随机产生n个元素的值,建立带表头结点的单链线性表L(尾插法)*/

voidCreateListTail(LinkList*L,intn)

LinkListp,r;

/*L为整个线性表*/

r=*L;

/*r为指向尾部的结点*/

p=(Node*)malloc(sizeof(Node));

r->

next=p;

/*将表尾终端结点的指针指向新结点*/

r=p;

/*将当前的新结点定义为表尾终端结点*/

/*表示当前链表结束*/

intmain()

LinkListL;

ElemTypee;

Statusi;

intj,k;

i=InitList(&

L);

初始化L后:

ListLength(L)=%d\n"

ListLength(L));

for(j=1;

j<

=5;

j++)

i=ListInsert(&

L,1,j);

在L的表头依次插入1~5后:

L.data="

ListTraverse(L);

ListLength(L)=%d\n"

i=ListEmpty(L);

L是否空:

i=%d(1:

是0:

否)\n"

i);

i=ClearList(&

清空L后:

=10;

ListInsert(&

L,j,j);

在L的表尾依次插入1~10后:

L,1,0);

在L的表头插入0后:

GetElem(L,5,&

e);

第5个元素的值为:

%d\n"

e);

for(j=3;

=4;

k=LocateElem(L,j);

if(k)

第%d个元素的值为%d\n"

k,j);

没有值为%d的元素\n"

j);

k=ListLength(L);

/*k为表长*/

for(j=k+1;

j>

=k;

j--)

i=ListDelete(&

L,j,&

/*删除第j个数据*/

if(i==ERROR)

删除第%d个数据失败\n"

删除第%d个的元素值为:

j,e);

依次输出L的元素:

"

j=5;

ListDelete(&

/*删除第5个数据*/

\n清空L后:

CreateListHead(&

L,20);

整体创建L的元素(头插法):

\n删除L后:

CreateListTail(&

整体创建L的元素(尾插法):

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2