期末考试必备----数据结构----顺序表之链表的模拟和相关操作(创建,头插,尾插,删除,定位,打印)

本文主要是介绍期末考试必备----数据结构----顺序表之链表的模拟和相关操作(创建,头插,尾插,删除,定位,打印),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据结构专栏:数据结构_脑子不好的小菜鸟的博客-CSDN博客 

					/*链表的相关操作*/#define ok 1
#define error 0
#define overflow -2typedef int status;
typedef int elemtype;typedef struct node
{elemtype data;struct node* next;
}Lnode, *Llist;/*status*/void create01(Llist& L, int n)
{int i;L = (Llist)malloc(sizeof(Lnode));/**///if (L == NULL)//	return error;L->next = NULL;Llist p, s;//p:追踪链尾,s:新建节点p = L;/**/printf("请输入你要创建的%d个元素的值(尾插,顺序创建)\n", n);for (i = 0; i < n; i++){s = (Llist)malloc(sizeof(Lnode));//if (s == NULL)//	return error;scanf("%d", &s->data);p->next = s;//尾插p = p->next;}p->next = NULL;/**///return ok;
}void create02(Llist& L)
{L = (Llist)malloc(sizeof(Lnode));/*创建头节点*/L->next = NULL;//尾部插入节点printf("请输入你要创建的元素值,以0结尾(尾插,顺序创建)\n");int val;scanf("%d", &val);Llist s, p;p = L;while (val){s = (Llist)malloc(sizeof(Lnode));s->data = val;//尾插p->next = s;p = p->next;scanf("%d", &val);}p->next = NULL;/**/
}void create03(Llist& L)
{L = (Llist)malloc(sizeof(Lnode));/**/L->next = NULL;printf("请输入你要创建的元素值,以0结尾(头插,逆序创建)\n");int val;scanf("%d", &val);Llist s;while (val){s = (Llist)malloc(sizeof(Lnode));s->data = val;//头插s->next = L->next;L->next = s;scanf("%d", &val);}
}void print(Llist& L)
{Llist q;/*注意不是Lnode,因为要指向next指针*/q = L->next;printf("打印链表元素\n");while (q){printf("%d ", q->data);q = q->next;}printf("\n");
}int getnum(Llist L)
{Llist q;/*注意不是Lnode,因为要指向next指针*/int n = 0;q = L->next;while (q){q = q->next;n++;}return n;
}status myinsert(Llist& L, int i, int e)
{if (i < 1)return error;Llist q = L;int j = 0;while (q != NULL && j < i - 1){j++;q = q->next;}if (q == NULL)return error;Llist s = (Llist/*注意:不要打星号*/)malloc(sizeof(Lnode));s->data = e;s->next = q->next;q->next = s;return ok;
}status myerase(Llist& L, int i)
{if (i < 1)return error;int j = 0, e;Llist q = L;while (q != NULL && j < i - 1){j++;q = q->next;}if (q == NULL)return error;e = q->next->data;Llist p = q->next;q->next = q->next->next;free(p);p = NULL;return e;
}Llist locat(Llist& L, int i)
{if (i < 1)return NULL;int j = 0;Llist q = L;while (q != NULL && j < i/**/){j++;q = q->next;}if (q == NULL)return NULL;return q;
}int main()
{Llist L1;int n;//尾插---->正向输出----->都需要一个指针p去跟踪链表末尾//已知元素个数创建//printf("请输入你要创建的链表元素个数:\n");//scanf("%d", &n);//create01(L1, n);create02(L1);print(L1);printf("链表元素个数为:%d\n", getnum(L1));//Llist L2;头插---->逆序输出以0为结尾输入的创建//create03(L2);//print(L2);//printf("链表元素个数为:%d\n",getnum(L2));int i, e;//注意插入和删除数据都是要定位到该位置的前面一个//插入数据printf("请输入你要插入的位置和数据\n");scanf("%d%d", &i, &e);myinsert(L1, i, e);print(L1);//删除数据printf("请输入你要删除的位置\n");scanf("%d", &i);e = myerase(L1, i);if (e == 0)printf("删除位置非法,删除失败\n");else{printf("删除的数据为:%d,删除成功\n", e);print(L1);}//定位printf("请输入你要定位的元素位置\n");scanf("%d", &i);Llist q = locat(L1, i);if (q == NULL)printf("定位非法,定位失败\n");elseprintf("%p\n", q);return 0;
}

这篇关于期末考试必备----数据结构----顺序表之链表的模拟和相关操作(创建,头插,尾插,删除,定位,打印)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871780

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地

SpringBoot中配置文件的加载顺序解读

《SpringBoot中配置文件的加载顺序解读》:本文主要介绍SpringBoot中配置文件的加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot配置文件的加载顺序1、命令⾏参数2、Java系统属性3、操作系统环境变量5、项目【外部】的ap

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指