无头节点的单循环链表中删除指针s所指结点的前驱结点

2024-05-01 09:32

本文主要是介绍无头节点的单循环链表中删除指针s所指结点的前驱结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include <stdio.h>
typedef int ElemType;
typedef struct
{ElemType data;struct LNode *next;
}LNode, *CLinkList;void initLink(CLinkList L);//初始化头节点
void createLink(CLinkList L, ElemType *arr, int n);//用长度为n的数组创建链表
void showList(CLinkList L);//输出指定节点之后的所有节点//返回L后第n个节点(n可超过L的总节点个数)
LNode *creLNodePoint(CLinkList L, int n);
//删除s的前驱节点
void delPrior(LNode *s);int main()
{ElemType data[6] = {1, 2, 3, 8, 4, 5 };int length = sizeof(data) / sizeof(ElemType);CLinkList L = (CLinkList)malloc(sizeof(CLinkList));LNode *s;initLink(L);createLink(L, data, length);printf("原链表:\t\t");showList(L);s = creLNodePoint(L,4);//制作指向循环链表某节点的指针delPrior(s);//删除s的前驱节点printf("s指向的数据为%d\n",*s);printf("删除其前驱节点:\t");showList(L);getchar();return 0;
}void initLink(CLinkList L)
{L->data = 0;L->next = L;
}void createLink(CLinkList L, ElemType *arr, int n)
{LNode *node = NULL;LNode *r = L;int i;r->data = arr[0];for (i = 1; i < n; i++){node = (LNode *)malloc(sizeof(LNode));node->data = arr[i];node->next = r->next;r->next = node;r = r->next;}
}void showList(CLinkList L)
{int i;LNode *r = L;while (r->next != L){printf("%d ", r->data);r = r->next;}printf("%d ", r->data);printf("\n");
}//返回L后第n个节点(n可超过L的总节点个数)
LNode *creLNodePoint(CLinkList L, int n)
{LNode *s = L;while (n--){s = s->next;}return s;
}//删除s的前驱节点
void delPrior(LNode *s)
{LNode *p = s;LNode *r = p;while (p->next != s){r = p;p = p->next;}r->next = s;free(p);
}

这篇关于无头节点的单循环链表中删除指针s所指结点的前驱结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Java空指针异常NullPointerException的原因与解决方案

《Java空指针异常NullPointerException的原因与解决方案》在Java开发中,NullPointerException(空指针异常)是最常见的运行时异常之一,通常发生在程序尝试访问或... 目录一、空指针异常产生的原因1. 变量未初始化2. 对象引用被显式置为null3. 方法返回null

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的