单链表——指定结点的前插和后插
- 后插
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode { //定义单链表结点类型int data; //每个节点存放一个数据元素struct LNode* next; //指针指向下一个节点
}LNode, * LinkList;
//初始化一个单链表(带头结点)
bool InitList(LinkList& L) {L = (LNode*)malloc(sizeof(LNode));//分配一个头结点if (L == NULL)//内存不足,分配失败return false;L->next = NULL;//头结点之后暂时还没有结点return true;
}
//在第i个位置插入元素e(带头结点)
bool ListInsert(LinkList& L, int i, int e) {if (i == 1) {LNode* s = (LNode*)malloc(sizeof(LNode));s->data = e;s->next = L;L = s; //头指针指向新节点return true;}LNode* p; //指针p指向当前扫描到的结点int j = 1; //当前p指向的是第几个结点p = L; //第1个结点while (p != NULL && j < i - 1) { //循环找到第i-1个结点p = p->next;j++;}if (p == NULL) {//i值不合法return false;}LNode* s = (LNode*)malloc(sizeof(LNode));//申请一个结点s->data = e;s->next = p->next;p->next = s;//将结点s连接到p之后return true;//插入成功
}bool InsertNextNode(LNode* p, int e) {if (p == NULL) {return false;}LNode* s = (LNode*)malloc(sizeof(LNode));if (s == NULL) {return false;}s->data = e;s->next = p->next;p->next = s;return true;}void test() {LinkList L;InitList(L);//插入数据ListInsert(L, 1, 5);ListInsert(L, 2, 6);ListInsert(L, 3, 9);LNode* p=L->next;InsertNextNode(p, 5);//打印数据while (L ->next!= NULL) {printf("%d\n", L->data);L = L->next;}
}
int main() {test();return 0;
}
2.前插
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode { //定义单链表结点类型int data; //每个节点存放一个数据元素struct LNode* next; //指针指向下一个节点
}LNode, * LinkList;
//初始化一个单链表(带头结点)
bool InitList(LinkList& L) {L = (LNode*)malloc(sizeof(LNode));//分配一个头结点if (L == NULL)//内存不足,分配失败return false;L->next = NULL;//头结点之后暂时还没有结点return true;
}
//在第i个位置插入元素e(带头结点)
bool ListInsert(LinkList& L, int i, int e) {if (i == 1) {LNode* s = (LNode*)malloc(sizeof(LNode));s->data = e;s->next = L;L = s; //头指针指向新节点return true;}LNode* p; //指针p指向当前扫描到的结点int j = 1; //当前p指向的是第几个结点p = L; //第1个结点while (p != NULL && j < i - 1) { //循环找到第i-1个结点p = p->next;j++;}if (p == NULL) {//i值不合法return false;}LNode* s = (LNode*)malloc(sizeof(LNode));//申请一个结点s->data = e;s->next = p->next;p->next = s;//将结点s连接到p之后return true;//插入成功
}
//前插
bool InsertPriorNode(LNode* p, int e) {if (p == NULL) {return false;}LNode* s = (LNode*)malloc(sizeof(LNode));if (s == NULL) {return false;}s->next = p->next;p->next = s; //新结点s连接到p之后s->data = p->data; //将p中元素复制到s中p->data = e; //p中元素覆盖为ereturn true;}void test() {LinkList L;InitList(L);//插入数据ListInsert(L, 1, 5);ListInsert(L, 2, 6);ListInsert(L, 3, 9);LNode* p=L->next;InsertPriorNode(p, 10);//打印数据while (L ->next!= NULL) {printf("%d\n", L->data);L = L->next;}
}
int main() {test();return 0;
}
单链表——指定结点的前插和后插相关推荐
- 单链表指定结点的前插与后插(C/C++)
typedef struct LNode{int data;struct LNode* next; }LNode, *LinkList; //这里LNode 和 *LinkList 等价,只不过LNo ...
- 数据结构单链表:指定结点的前插、后插操作
指定结点的前插操作 typedef struct LNode{int data;struct LNode *next; }LNode, *LinkList;//在p结点之前插入元素e bool Ins ...
- 单链表的前插法和后插法创建
根据结点插入位置的不同,链表的创建方法可分为前插法和后插法 前插法 前插法是通过将新节点逐个插入链表的头部(头节点之后)来创建链表,每次申请一个新节点,读入相应的数据元素值,然后将新节点插入到头节点之 ...
- 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点
/*实验2 1. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点 (low和high的值是多少可自由设计).并且要在程序中验证其功能实现. (可在实验1的第3题的基 ...
- C++删除单链表指定元素
C++删除单链表指定元素 对于C++单链表的创建与打印操作之前已经讲述过,那么普通的元素删除也可以很容易实现.在力扣203.移除链表元素中提出了一种元素删除操作,题目如下: 本来觉得很简单,但是在实现 ...
- 狸猫换太子--删除无头单链表中结点
狸猫换太子–删除无头单链表中结点 @(算法学习) 学习自<编程之美>. 很有意思的一种做法. 给定一个没有头指针的单链表,一个指针指向次单链表中的一个中间结点,删除此结点. 分析:这种根本 ...
- 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。
今天和大家分享一道2009年代码为408的一道真题: 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list.在不改变链表的前提下,请设计一个尽可能高效的算法,查找链 ...
- 双向链表的前插法和后插法创建
根据结点插入位置的不同,链表的创建方法可分为前插法和后插法 前插法 前插法是通过将新节点逐个插入链表的头部(头节点之后)来创建链表,每次申请一个新节点,读入相应的数据元素值,然后将新节点插入到头节点之 ...
- 单链表基本操作的实现——前插法与后插法创建单链表
一.前插法创建单链表 算法步骤: (1)创建一个只有头结点的空链表. (2)根据创建链表包括的元素n,循环n次以下操作: 生成新结点:-->输入元素值赋给新结点数据域:-->将新结点插入到 ...
最新文章
- gcc 与 glibc 的关系 glibc版本查看
- Notepad++ 设置执行 lua 和 python
- pl/sql developer 自带汉化选项
- MYSQL中的BlackHole引擎
- ps怎么清屏_黑洞PS大赛刷屏!最后一张扎心了……
- Vue 引入 zepto
- Unity3D游戏框架之dll反编译和混淆
- Lync Server 服务器版本升级
- 不上网电脑安装python_离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)...
- 使用Vue前端框架实现知乎日报app
- 2-11 CAD基础 镜像(mirror)
- csdn WLW 文件验证
- 制作HTML长图的APP,长图制作工具 显示只是一张图片,点开一看却发现有很多张图片|制作长图软件...
- 浅谈一下个人基于IRIS后端业务开发框架的理解
- 2015读过的书与看过的影视资料
- Windows 7关闭睡眠(休眠)模式和删除休眠文件
- 创业基础(第一章第二章) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
- sql函数平均值、总数、最小值、最大值、总和、标准差
- mysql获取前一天日期_mysql中获取当前时间的前一天
- Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程