单链表的定义及基本操作Word格式.docx

上传人:b****7 文档编号:21904802 上传时间:2023-02-01 格式:DOCX 页数:9 大小:42.62KB
下载 相关 举报
单链表的定义及基本操作Word格式.docx_第1页
第1页 / 共9页
单链表的定义及基本操作Word格式.docx_第2页
第2页 / 共9页
单链表的定义及基本操作Word格式.docx_第3页
第3页 / 共9页
单链表的定义及基本操作Word格式.docx_第4页
第4页 / 共9页
单链表的定义及基本操作Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

单链表的定义及基本操作Word格式.docx

《单链表的定义及基本操作Word格式.docx》由会员分享,可在线阅读,更多相关《单链表的定义及基本操作Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

单链表的定义及基本操作Word格式.docx

五、总结与体会

(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。

调试程序时,出现了许多错误。

如:

结构体类型指针出错,忽略了释放存储空间,对头插法建表、尾插法建表不熟悉等。

另外还有一些语法上的错误。

由于对所学知识点概念模糊,试验课上未能完成此次上机作业。

后来经过查阅教材,浏览网页等方式,才完成试验。

这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。

以后要都去练习、实践,以完善自己的不足。

六、程序清单(包含注释)

//单链表

#include<

stdio.h>

malloc.h>

#defineOK1

#defineERROR0

typedefcharElemType;

typedefintStatus;

//线性表的单链表的存储结构

typedefstructLNode{

ElemTypedata;

structLNode*next;

}LNode,*LinkList;

//LinkList为结构体类型的指针,可以直接定义变量,比如LinkListp;

//建表(头插法)

voidCreatListF(LinkList&

L,ElemTypea[],intn)

{

//初始化线性表

L=(LinkList)malloc(sizeof(LNode));

//分配内存空间

L->

next=NULL;

//在表中插入元素

LinkListS;

inti;

//头插法

for(i=0;

i<

n;

i++)

{

S=(LinkList)malloc(sizeof(LNode));

//生成新结点

S->

data=a[i];

//数据域

next=L->

next;

L->

next=S;

}

}

//建表(尾插法)

voidCreatListR(LinkList&

LinkListp;

p=L;

//尾插法

p->

p=S;

p->

//初始化线性表

voidInitList(LinkList&

L)

//获得链表元素

StatusGetElem(LinkListL,inti,ElemType&

e)

//L为带头结点的单链表的头指针

intj;

//初始化,p指向第一个结点

p=L->

//j为计数器

j=1;

//顺指针往后查找,直到p指向第i个元素或p为空

while(p&

&

j<

i)

p=p->

j++;

//第i个元素不存在

if(!

p||j>

returnERROR;

//取第i个元素

e=p->

data;

returnOK;

//插入

StatusListInsert(LinkList&

L,inti,ElemTypee)

intj=0;

while(p!

=NULL&

i-1)//找第i-1个结点

i-1)

S=(LinkList)malloc(sizeof(LNode));

S->

data=e;

next=p->

//删除

StatusListDelete(LinkList&

L,inti,ElemType&

LinkListq;

while((p->

next)!

i-1)//找第i个结点

//!

(p->

next):

指向第i个结点的指针为空(第i个元素不存在)

next)||j>

q=p->

next=q->

e=q->

free(q);

//求表的长度

intListLength(LinkListL)

//线性链表最后一个结点的指针为空

=NULL)

returnj;

//输出

voidvisit(LinkListL)

printf("

%c"

p->

data);

//销毁:

要销毁的话从头结点开始依次free但要先得到下一个节点再free

voidDestroyList(LinkList&

free(p);

p=q;

q=p->

//free(p);

//判空

intListEmpty(LinkListL)

//为空表则执行该语句,否则返回return0;

return(L->

next==NULL);

//查找

intListSearch(LinkListL,ElemTypee)

inti=1;

data!

=e)

i++;

if(p==NULL)

return0;

returni;

intmain()

ElemTypee;

ElemTypea[6]={'

a'

'

b'

c'

d'

e'

f'

};

LinkListL;

//链表的头指针

printf("

头插法建表:

"

);

CreatListF(L,a,6);

visit(L);

\n\n"

//初始化

InitList(L);

初始化后的表:

尾插法建表:

CreatListR(L,a,6);

//初始化后表为空,此时不要调用GetElem()

GetElem(L,3,e);

表中第3个元素为:

%c\n\n"

e);

//在第5个位置插入字符'

k'

ListInsert(L,5,'

在表中第5个位置插入字符'

后:

表的长度为:

%d\n\n"

ListLength(L));

intz;

z=ListSearch(L,'

d是第%d个元素\n\n"

z);

ListDelete(L,2,e);

删除第2个元素:

//销毁

//DestroyList(L);

return0;

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

当前位置:首页 > 高等教育 > 工学

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

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