单链表的实现 (C语言版 数据结构 严蔚敏)
#include<stdlib.h>
#include<stdio.h>
typedef struct LNode {
int data;
struct LNode* next;
}LNode,*LinkList;
LinkList CreateLinkList(LinkList L); //创建单链表,并返回头指针
int GetElemLinkList(LinkList L, int *e); //查找单链表第i位在值,并返回给e
int InsertLinkList(LinkList L, int i, int e); //在第i个位置插入e值
int DeleteLinkList(LinkList L, int i, int* e); //删除第i个位置的元素,把删除的值返给e
int UpdateLinkList(LinkList L); //改变数据 ,先增加再删除。
void print(LinkList L); //遍历单链表
void main()
{
LinkList LHead=NULL; //头结点为空
int a = 0;
LHead=CreateLinkList(LHead);
//a = GetElemLinkList(LHead,&a);
//a = DeleteLinkList(LHead,2 , &a);
//InsertLinkList(LHead, 2,2);
//UpdateLinkList(LHead);
print(LHead);
return;
}
LinkList CreateLinkList(LinkList L) //创建有头结点的单链表,长度为n ,从末尾开始插入数据
{
LinkList p;
int i;
int length;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
printf("请输入单链表的长度");
scanf("%d", &length);
for(i=length;i>0;--i)
{
printf("请输入第%d位元素 ",i);
p = (LinkList)malloc(sizeof(LNode)); //生成新结点
scanf("%d", &p->data);
p->next = L->next; L->next = p; //插入到表头
}
return L->next;
}
void print(LinkList L) //遍历数据显示元素,从第一个元素开始,正历。
{
LinkList p = L;
while (p!=NULL)
{
printf("%2d", p->data);
p = p->next;
}
return;
}
int GetElemLinkList(LinkList L, int* e)
{
LinkList p = L;
int i;
int j = 1;
printf("请输入第i个位置 ");
scanf("%d", &i);
while (p && j < i)
{
p = p->next; ++j;
}
if (!p || j > i)
{
return -1;
}
*e = p->data;
printf("第%d个元素是%2d",i,*e);
return *e;
}
int InsertLinkList(LinkList L, int i, int e)
{
LinkList p = L; int j = 1;
while (p && j < i - 1)
{
p = p->next; ++j; //寻找第i-1个结点
}
if (!p || j > i - 1) return -1;
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next; p->next = s;
return 1;
}
int DeleteLinkList(LinkList L, int i, int* e)
{
LinkList p = L;int j = 1;
//LinkList q = L;
while (p->next && j < i-1 ) //寻找第i个结点,并令p指向其前趋
{
p = p->next; ++j;
}
if (!(p->next) || j > i-1)
{
printf("删除位置不合理");
return -1;
}
/*q = p->next; p->next = q->next;
*e = q->data;*/
*e = p->next->data;
p->next = p->next->next;
printf("被删除的是第%d个元素%d ", i, *e);
return *e;
}
int UpdateLinkList(LinkList L)
{
int i,val;
printf("请输入修改的第i个位置");
scanf("%d", &i);
//==DeleteLinkList(L,2,2)
printf("请输入修改的值为");
scanf("%d", &val);
InsertLinkList(L, i, val);
DeleteLinkList(L, i+1, &i);
return 1;
}
单链表的实现 (C语言版 数据结构 严蔚敏)相关推荐
- 数据结构(C语言版)严蔚敏 吴伟民 编著 第1章 绪论
数据结构(C语言版)严蔚敏 吴伟民 编著 第1章 绪论 1.1 什么是数据结构? 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析 1.4.1 算法 1.4.2 算法设 ...
- 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...
1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...
- 【数据结构】01-绪论《数据结构 C语言版(严蔚敏、吴伟民)》
文章目录 教材 > 第1章 绪论 1.1 什么是数据结构 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分析 习题集 > 第1章 二.算法设计题 附 > ...
- 《数据结构》C语言版 (清华严蔚敏版)详解
关键字定义 1.数据 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合. 2.数据元素 数据元素:是组成数据的.有一定意义的基本单位 ...
- 《数据结构》C语言版(严蔚敏)——绪论(一)
目录 数据结构的研究内容 基本概念和术语 数据结构 数据类型和抽象数据类型 算法和算法分析 数据结构的研究内容 寻求数学模型的实质是分析问题,建立相应的数学方程: 数据结构主要研究==非数值问题 == ...
- c语言逻辑代数常用公式证明,《数据结构C语言版》严蔚敏第二章逻辑代数基础...
第二章逻辑代数基础,数字电路,1.2.1逻辑代数与基本逻辑关系,在数字电路中,我们要研究的是电路的输入输出之间的逻辑关系,所以数字电路又称逻辑电路,相应的研究工具是逻辑代数(布尔代数).,在逻辑代数中 ...
- Θ(n)反转单链表(算法导论第三版第十章10.2-7)
Θ(n)反转单链表 (算法导论第三版第十章10.2-7) template<typename T> void reverses(Single_L<T> &l) {if( ...
- 数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码
数据结构严蔚敏C语言版-线性表顺序存储结构(顺序表)C语言实现相关代码 1.运行环境 2.准备工作 1)项目构建 1>新建一个SeqList项目 2>新建两个文件Sources和Heade ...
- 数据结构 严蔚敏 第二章 线性表
数据结构 严蔚敏 第二章 线性表 线性表:由n个(n>=0)数据特征相同的元素构成的有限序列. 线性表的类型定义表示和实现 顺序表 存储单元地址连续 随机存取 若每个元素占用 m 个存储单元,以 ...
- 【计算机】数据结构-严蔚敏/清华大学P3
[计算机]数据结构-严蔚敏/清华大学P1 第二章 线 性表 线性结构 是 一个数据元素的有序(次序)集 线性结构的基本特征: 1. 集合中必存在唯一的一个"第一元素": ...
最新文章
- 请教一个算法问题,有两个数组A,B,判断A中是否至少有一个元素和B中元素相同...
- 韩国文档的编码方式_像韩国学生学习英语一样学习编码
- C linux 宏定义的使用
- TinyDBCluster Vs routing4db
- Android Studio 插件开发详解二:工具类
- Dockerfile指令详解:WORKDIR 指定工作目录
- Python延迟打印字符
- webpack之externals操作三部曲--正确的姿势
- 信息学奥赛一本通 1188:菲波那契数列(2) | OpenJudge NOI 2.3 1760:菲波那契数列(2)
- Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
- 三步解决error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“
- 学习mysql比较好一些书籍
- 设置图片的透明度从左到右渐变
- python远程调用摄像头_教你如何利用python调用摄像头
- python初体验-hello world答案_Python初体验(一)—【配置环境变量】【变量】【input】【条件语句】【循环语句】...
- APK脱壳之—如何脱掉“梆梆加固”的保护壳
- 华为开发者大会主题演讲:3D建模服务让内容高效生产
- 【数据结构】先序遍历+中序遍历创建二叉树(C++实现)
- python导入库的简便方法
- 新视野大学英语(第三版)视听说4答案
热门文章
- 人力资源管理教程 HR自学视频教程
- Ehr人力资源系统和HRsaas系统有什么区别?
- java实现一个电子书下载系统
- windows10 显示实时网速
- 合肥师范学院计算机组成原理实验,计算机组成原理实验教学探索
- sap不用oracle数据库库,SAP系统安装之Oracle 10g数据库(Win3264)
- 新塘单片机烧写器_NuMicro ICP Programming Tool-ICP Programming Tool(新唐单片机烧录工具)下载 v3.00.6909官方版--pc6下载站...
- CC2530 串口通信
- Axure元件库web组件库典藏版 (含五大类159小类组件 )
- cop2000计算机组成原理,COP2000计算机组成原理实验系统.pdf