1. 后插

#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;
}

单链表——指定结点的前插和后插相关推荐

  1. 单链表指定结点的前插与后插(C/C++)

    typedef struct LNode{int data;struct LNode* next; }LNode, *LinkList; //这里LNode 和 *LinkList 等价,只不过LNo ...

  2. 数据结构单链表:指定结点的前插、后插操作

    指定结点的前插操作 typedef struct LNode{int data;struct LNode *next; }LNode, *LinkList;//在p结点之前插入元素e bool Ins ...

  3. 单链表的前插法和后插法创建

    根据结点插入位置的不同,链表的创建方法可分为前插法和后插法 前插法 前插法是通过将新节点逐个插入链表的头部(头节点之后)来创建链表,每次申请一个新节点,读入相应的数据元素值,然后将新节点插入到头节点之 ...

  4. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点

    /*实验2 1. 写一个函数DeleteRange删除单链表中结点的值在low 和high之间的结点 (low和high的值是多少可自由设计).并且要在程序中验证其功能实现. (可在实验1的第3题的基 ...

  5. C++删除单链表指定元素

    C++删除单链表指定元素 对于C++单链表的创建与打印操作之前已经讲述过,那么普通的元素删除也可以很容易实现.在力扣203.移除链表元素中提出了一种元素删除操作,题目如下: 本来觉得很简单,但是在实现 ...

  6. 狸猫换太子--删除无头单链表中结点

    狸猫换太子–删除无头单链表中结点 @(算法学习) 学习自<编程之美>. 很有意思的一种做法. 给定一个没有头指针的单链表,一个指针指向次单链表中的一个中间结点,删除此结点. 分析:这种根本 ...

  7. 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。

    今天和大家分享一道2009年代码为408的一道真题: 已知一个带有表头的单链表,结点结构为data-link,假设该链表只给出了头指针list.在不改变链表的前提下,请设计一个尽可能高效的算法,查找链 ...

  8. 双向链表的前插法和后插法创建

    根据结点插入位置的不同,链表的创建方法可分为前插法和后插法 前插法 前插法是通过将新节点逐个插入链表的头部(头节点之后)来创建链表,每次申请一个新节点,读入相应的数据元素值,然后将新节点插入到头节点之 ...

  9. 单链表基本操作的实现——前插法与后插法创建单链表

    一.前插法创建单链表 算法步骤: (1)创建一个只有头结点的空链表. (2)根据创建链表包括的元素n,循环n次以下操作: 生成新结点:-->输入元素值赋给新结点数据域:-->将新结点插入到 ...

最新文章

  1. gcc 与 glibc 的关系 glibc版本查看
  2. Notepad++ 设置执行 lua 和 python
  3. pl/sql developer 自带汉化选项
  4. MYSQL中的BlackHole引擎
  5. ps怎么清屏_黑洞PS大赛刷屏!最后一张扎心了……
  6. Vue 引入 zepto
  7. Unity3D游戏框架之dll反编译和混淆
  8. Lync Server 服务器版本升级
  9. 不上网电脑安装python_离线安装python第三方库的实用方法:解决公司内网,服务器/电脑不能上网却需要安装python三方库问题(上:Windows环境中)...
  10. 使用Vue前端框架实现知乎日报app
  11. 2-11 CAD基础 镜像(mirror)
  12. csdn WLW 文件验证
  13. 制作HTML长图的APP,长图制作工具 显示只是一张图片,点开一看却发现有很多张图片|制作长图软件...
  14. 浅谈一下个人基于IRIS后端业务开发框架的理解
  15. 2015读过的书与看过的影视资料
  16. Windows 7关闭睡眠(休眠)模式和删除休眠文件
  17. 创业基础(第一章第二章) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  18. sql函数平均值、总数、最小值、最大值、总和、标准差
  19. mysql获取前一天日期_mysql中获取当前时间的前一天
  20. Xilinx FPGA平台GTX简易使用教程(四)GTX IP核配置教程

热门文章

  1. Blockly - 来自Google的可视化编程工具
  2. 属性操作与元素节点操作和onscroll
  3. 南卡和FIIL蓝牙耳机哪个更好?国产蓝牙耳机南卡和FIIL评测
  4. C语言选择排序法(通俗易懂类型)
  5. include<cstdio>
  6. ctf(夺旗赛)的竞赛模式以及题目类型
  7. Java短信接口开发经验及具体开发实现
  8. 使用百度地图API申请密钥流程
  9. python0不能做除数、怎么解决_浅谈pandas dataframe对除数是零的处理
  10. 光电直读远传水表好用吗?有什么优势吗?