要删除在指定节点之后存在的节点,需要跳过所需数量的节点以到达节点,之后的节点将被删除。 需要跟踪这两个节点。如果在该节点之前存在的节点,则将删除该节点。 为此,使用了两个指针:ptr和ptr1。

使用以下语句来执行此操作。

ptr = head; for (i = 0;i < loc;i++) { ptr1 = ptr; ptr = ptr->next; if (ptr == NULL) { printf("There are less than %d elements in the list..", loc); return; } }

现在,任务差不多完成了,只需要做一些指针调整。 使ptr1(指向指定节点)的下一个指向ptr的下一个(要删除的节点)。

这将通过使用以下语句来完成。

ptr1 ->next = ptr ->next; free(ptr);

算法

第1步:如果HEAD = NULL 打印提示内存溢出 转到第10步 结束时间 第2步:设置TEMP = HEAD 第3步:设置I = 0 第4步:重复第5步到第8步直到 I 第5步:TEMP1 = TEMP 第6步:TEMP = TEMP→NEXT 第7步:如果TEMP = NULL 提示“不存在节点” 转到第12步 结束条件 第8步:I = I + 1 循环结束 第9步:TEMP1→NEXT = TEMP→NEXT 第10步:释放 TEMP 第11步:退出

示意图 –

C语言示例代码 –

#include #include void create(int); void delete_specified(); struct node { int data; struct node *next; }; struct node *head; void main() { int choice, item; do { printf("1.Append Listn"); printf("2.Delete noden"): printf("3.Exitn"): printf("4.Enter your choice?"); scanf("%d", &choice); switch (choice) { case 1: printf("Enter the itemn"); scanf("%d", &item); create(item); break; case 2: delete_specified(); break; case 3: exit(0); break; default: printf("Please enter valid choicen"); } } while (choice != 3); } void create(int item) { struct node *ptr = (struct node *)malloc(sizeof(struct node *)); if (ptr == NULL) { printf("OVERFLOWn"); } else { ptr->data = item; ptr->next = head; head = ptr; printf("Node insertedn"); } } void delete_specified() { struct node *ptr, *ptr1; int loc, i; scanf("%d", &loc); ptr = head; for (i = 0;i < loc;i++) { ptr1 = ptr; ptr = ptr->next; if (ptr == NULL) { printf("There are less than %d elements in the list..n", loc); return; } } ptr1->next = ptr->next; free(ptr); printf("Deleted %d node ", loc); }

执行上面示例代码,得到以下结果 –

1.Append List 2.Delete node 3.Exit 4.Enter your choice?1 Enter the item 12 Node inserted 1.Append List 2.Delete node 3.Exit 4.Enter your choice?1 Enter the item 23 Node inserted 1.Append List 2.Delete node 3.Exit 4.Enter your choice?2 12 There are less than 12 elements in the list.. 1.Append List 2.Delete node 3.Exit 4.Enter your choice?2 1 Deleted 1 node

¥ 我要打赏   纠错/补充 收藏

单链表删除指定节点c语言,在单链表删除指定节点之后的节点相关推荐

  1. c语言 链表 删除节点,C语言实现单链表节点的删除(不带头结点)

    对单链表节点进行增删改查是最基本的操作,这篇博客将会来实现对节点的删除.其他的操作可参考<C语言实现链表的基本操作>这篇博客.删除某个节点有两个类型: (1)删除i某个位置的节点: (2) ...

  2. c语言用链表实现成绩管理系统,C语言基于单链表得学生成绩管理系统

    前言 传说中讲课通俗而不庸俗,说话风流而不下流的小编又来了哦,今天的主要内容是:C语言基于单链表得学生成绩管理系统.首先给年夜家总结下为什么你们学习C语言会觉得难,尤其是对单链表这块,主要原因得是因为 ...

  3. c语言仓库管理系统链表,仓库管理系统 C语言 C++ 数据结构 链表 课程设计

    仓库管理系统 C语言 C++ 数据结构 链表 课程设计 #include #include #include #include #define MAX 64 typedef struct node{ ...

  4. c语言仓库管理系统链表,仓库管理系统 C语言 C 数据结构 链表 课程设计.doc

    仓库管理系统 C语言 C 数据结构 链表 课程设计 #include #include #include #include #define MAX 64 typedef struct node{ /* ...

  5. 链表表示八进制加法c语言,用单链表实现八进制加法操作,恳请大家看看Add( )函数的问题...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 源码: #include using namespace std; typedef int DataType; typedef struct node{ ...

  6. c语言链表与字符结合,C语言实现双链表的(终端)添加和查询

    文章如果有写的不对的地方,欢迎指正^^ 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结 ...

  7. c语言实现链表结构6,用c语言实现的链表结构--数据结构实验

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include"stdio.h" //使用new指针来将临时变量重新初始化 #include"stdio.h" ...

  8. 图十字链表并求度c语言,利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现...

    #include #include #include /* 利用十字链表存储有向图,可用于同时查找某个顶点的出度与入度: */ typedef struct edge{//顶点表 int headve ...

  9. 单表代换加密算法用c语言实现,单表代替密码原理及算法实现

    二.由独立试验产生双字母.根据Beker在1982年统计的英文双字母的频数给出了双字母的频率.       统计出的英文双字母的概率最大的30对字母按概率大小排列为: th    he    in   ...

最新文章

  1. fanuc机器人与plc的通讯_S7-1200PLC与FANUC机器人Profinet通讯方法
  2. 这本空降京东当当新书榜TOP1的“算法小抄”是什么来头?
  3. 、PHP只能访问mysql_php中 mysql函数不能调用,只有mysql_query()可以用
  4. 请求https错误: unable to find valid certification
  5. 【放置奇兵】英雄各属性介绍
  6. Android一个ListView列表之中插入两种不同的数据
  7. 安卓代码还是xml绘制页面_我们应该绘制实际还是预测,预测还是实际还是无关紧要?
  8. 这是自己的第一篇博客
  9. java五层架构_Web五层架构
  10. mysql动态调整jndi_tomcat6.0 JNDI MYSQL设置
  11. 计算机终端mac是什么,苹果Mac OS终端是什么,Mac OS终端的作用是什么?
  12. R语言缺失值判断与处理mice包-3
  13. 中国微观企业实证研究常用指标集合(2000-2020)
  14. Linux文件目录sha256,如何使用 SHA256 校验下载的文件
  15. 简单三步下载网页微博中的视频
  16. android消除锯齿原理分析
  17. 音频处理 windows10下python三方库librosa安装
  18. 「水」滔天巨浪---牛客小白
  19. c语言 输入1-7之间的一个整数,然后根据输入的数字判断是星期几,最后输出对应的星期的全称。如输入3,则输出Wednesday。
  20. 国民技术MCU产品类别介绍——速记分类

热门文章

  1. sql server 群集_SQL Server群集索引概述
  2. PowerShell SQL Server验证实用程序– DBAChecks
  3. javascript 事件冒泡和事件代理
  4. 解决mysql分页数据错乱问题
  5. Selenium(Python)页面对象+数据驱动测试框架
  6. 表单中的日期 字符串和Javabean中的日期类型的属性自动转换
  7. [Linux]Linux系统调用列表
  8. 如何使用工具进行线上 PHP 性能追踪及分析?
  9. 成员函数的重载,覆盖与隐藏
  10. JAVA利用JXL导出/生成 EXCEL1