第一范文网 - 专业文章范例文档资料分享平台

链表基本操作

来源:用户分享 时间:2025/11/26 8:28:30 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

题目一 链表基本操作

一、数据结构与核心算法的设计描述

1、单链表的最大长度 #define MAXSIZE 100 2、单链表的结点类型定义

/* 定义elemtype为int类型 */ typedef int elemtype; /* 单链表的结点类型 */ typedef struct STD {

elemtype elem; STD *next;

}list, * linklist; 3、初始化单链表

/* 函数功能:对链表进行初始化 。参数:链表(linklist L)。

成功初始化返回1,否则返回0 */ int init(linklist &L) {

L=(linklist)malloc(sizeof(list));//头结点申请内存。 if(!L) //判断有无申请到空间。

return 0; //没有申请到内存,参数失败返回0 L->next=NULL;

L->elem=0; //单链表中有多少元素 return 1; //成功参数返回1 }

4、清空单链表

/* 函数功能:把链表清空 。参数:链表(linklist L)。成功清空链表返回1*/ int makeempty(linklist &L) {

linklist p,q; p=L->next;

while(p) //当p非空时,删除p {

q=p;

p=p->next; free(q); }

L->next=NULL; //只剩头指针,所以L->next=NULL L->elem=0; //清空后链表中元素为0 return 1; //清空后返回1 }

5、求链表长度

/*函数功能:返回链表的长度。 参数;链表(linklist L)。 函数返回链表的长度 */ int getlength(linklist L) {

linklist p;

p=L->next; int j=0; while(p) {

j++; //统计链表中元素 p=p->next; }

return j; //最后返回链表长度.

}

6、判断链表是否为空

/*函数功能:判断链表是否为空。参数;链表(linklist L)。链表为空时返回0,不为空返回1*/ int isempty(linklist L) {

if(L->next) //头结点后有元素表示链表不空则返回1 return 1; else

return 0; //头结点后没有元素表示链表不空则返回0 }

7、检查链表是否为满

/*函数功能:判断链表是否为满。参数;链表(linklist L)。链表为满时返回0,不为满返回1*/ int isfull(linklist L) {

if(L->elem <= MAXSIZE) //头结点的elem储存的为链表的长度。 return 1; //其小于MAXSIZE表示链表不满 else

return 0; //否则返回0 }

8、遍历链表

/*函数功能:遍历链表,输出每个节点的elem值。参数;链表(linklist L) 通过循环逐个输出节点的elem值*/ void show(linklist L) {

linklist p; p=L->next;

if(isempty(L)==0) //当链表为空时则输出链表为空 {

cout<<\链表为空!\ }

while(p) //当链表为不空时则输出链表每个节点的elem值 {

cout<elem<<\ p=p->next; }

cout<

9、从链表中查找元素

/*函数功能: 从链表中查找有无给定元素。参数;链表(linklist L),给定元素(int i)

如果链表中有给定元素(i)则返回1,否则返回0*/ int find(linklist L, int i) {

linklist p; p=L->next; while(p) {

if(p->elem==i) //判断有无元素I,有返回1 return 1; p=p->next; }

return 0; //没有找到返回0 }

10、从链表中查找与给定元素值相同的元素在表中的位置

/*函数功能: 从链表中查找给定元素的位置。参数;链表(linklist L),给定元素(int i) 如果链表中有给定元素i则返回元素的位置, 没有则返回0*/ int location(linklist L,int i) {

linklist p; int j=0; p=L->next; while(p) {

j++;

if(p->elem==i) //判断有无元素i,有返回其的位置j return j; p=p->next; }

return 0; //没有则返回0 }

11、向链表中插入元素

/*函数功能:向链表中的某个位置插入元素。参数;链表(linklist L),位置(int i),元素(elemtype e)。成功插入返回1,否则返回0 */ int insert(linklist &L, int i, elemtype e) {

linklist p, s; int j = 0; p = L;

while (p&&j

p = p->next; j ++; }

if(j>i-1||!p) //不符合条件返回0 return 0;

s = (linklist)malloc(sizeof(list)); //给节点s分配内存 s->elem = e;

s->next = p->next; //插入操作 p->next = s;

L->elem++; //插入完成后头结点的elem加1 return 1; //成功插入返回1 }

12、从链表中删除元素

/*函数功能:在链表中的某个位置删除元素。参数;链表(linklist L),位置(int i),元素(elemtype e)。成功删除返回1,否则返回0 */ int deleteelem(linklist &L,int i) {

linklist p,q; int j=0; p=L;

while (p->next&&j

p=p->next; j++; }

if(j>i-1||!(p->next)) //不符合条件返回0 return 0; q=p->next;

p->next=q->next; //删除操作 free(q);

L->elem--; ////插入完成后头结点的elem减1 return 1; //成功删除返回1 }

13、主界面函数

/* 函数功能:显示所有操作功能。参数;无*/ void zhujiemian() {

cout<

cout<<\数据结构实验一\

cout<<\ cout<<\链表初始化\ cout<<\清空链表\ cout<<\求链表长度\ cout<<\链表是否为空\ cout<<\检查链表是否为满\ cout<<\遍历链表\

cout<<\从链表中查找元素\

cout<<\从链表中查找与给定元素值相同的元素在表中的位置\ cout<<\向链表中插入元素\

cout<<\从链表中删除元素\ cout<<\其他键退出\

cout<<\ cout<<\请选择要进行操作的序号(1--10):\}

搜索更多关于: 链表基本操作 的文档
链表基本操作.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c6jh147iei33uh255bmpt_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top