Tip:下面代码是通过结构体中某个值去实现的判断是实现增删的,具体依靠个人业务不同
void insert_element(struct Node *header,int keywordVal,int val){
struct Node *temp=header;
struct Node *mPrevious=NULL;
while (temp!=NULL)
{
if (temp->val==keywordVal)
{
//先连后断
struct Node *pNewNode=(struct Node *)malloc(sizeof(struct Node));
pNewNode->val=val;
pNewNode->pNext=temp->pNext;
if (mPrevious!=NULL)
{
mPrevious->pNext=pNewNode;
pNewNode->pPrevious=mPrevious;
}
}
temp=temp->pNext;
mPrevious=temp;
}
}
struct Node * delete_element(struct Node *header,int keywordVal){
struct Node *mCurren=header;
struct Node *mPrivious=NULL;
struct Node *mNext=NULL;
//删除第一个节点:只需要将head指向第二个节点
if (header->val==keywordVal)
{
return pHeader->pNext;
}
while (mCurren!=NULL)
{
//删除最后一个节点,只需要将指向最后一个节点的指针(引用)指向NULL(null)
if (mCurren->pNext==NULL&&mCurren->val==keywordVal)
{
mPrivious->pNext=NULL;
}
//删除中间节点,只要将需要将指向需要删除节点的指针(引用)指向需要删除节点的下一个节点
else if(mCurren->val==keywordVal)
{
mNext=mCurren->pNext;
mPrivious->pNext=mNext;
mNext->pPrevious=mPrivious;
}
mPrivious=mCurren;
mCurren=mCurren->pNext;
}
return header;
}
运行如下代码:
结果:
分享到:
相关推荐
数据结构 c语言 链表的综合操作,增删改查,倒数第k个
用于C语言线性链表的各项操作,包括增删改查,此为带头结点的线性链表
适用于考研初试数据结构顺序表,...链表有带头结点的基本操作和不带头结点的基本操作,栈和队列有动态存储和静态存储的基本操作。二叉树有结构体定义,初始化和树的建立,包括线索二叉树的实现和中序,前序,后序遍历。
链表是一种常见的数据结构,资源包含了我对单链表的增删改查实现,本资源是不带头结点的单链表的增删改查,个人能力有限,希望指出不足之处,与大家共勉
完成双向链表的插入、删除以及查找,将学生管理系统使用的数组,以双向链表的方式实现,能够支持无限制的学生人数的增删改查以及保存。 3,代码实现。 #include #include #include #include typedef struct ...
树的孩子链表法实现(c语言) #include<stdio.h> #include<stdlib.h> #define M 100 typedef char Etype; //定义树结点值的类型字符型 typedef struct CSNode /*树结点结构*/ {Etype data; struct CSNode *...
问题:实现单链表、循环链表、双向链表,支持增删操作 问题:实现单链表反转 问题:实现两个有序的链表合并为一个有序链表 问题:实现求链表的中间结点 栈 问题:用数组实现一个顺序栈 问题:用链表实现一个...
第一题(30分) 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据 域中的数据从小到大顺序链接。函数fun的功能是:把形参x的值放入一个新结点 ... 不得增行或删行,也不得更改程序的结构!
c. 该程序要有顾客购票,查询班机起飞降落时间,班机订票情况等3个功能,并实现菜单选项 5、 用C++编写一个简单的行编辑器,每个结点保存一行文本,程序以E file开始,然后显示行数和提示符,如果输入I,后面...
(1)对学生、社团进行增删改查 (2)学生入社、退社、修改职务 (3)学生和社团信息用文件保存,可以将信息读入内存 PS:(1)因为当时都没学数据库,所以只设计了两个文件,学生文件和社团文件,入社信息在两个...
运用数据结构的单链表实现对学生成绩的增删改查,录入学生成绩时运用到了C语言文件的操作,本程序介绍了两种链表组织方式头插法和尾查法。
问题求解步骤的描述 C.要满足五个基本特性 D.A和 C. 5. 下面关于算法说法错误的是(D )【南京理工大学 2000 一、1(1.5分)】 A.算法最终必须由计算机程序实现 B.为解决某问题的算法同为该问题编写的程序含义...
下窗口上面左侧的小窗口为编辑窗口,由用户输入待插或待删的关键字,输入之后其右侧的操作命令将由隐式状态改为显式状态。 34. 内部排序 图示窗口演示排序过程以及排序过程中关键字之间进行的比较次数和记录移动的...
实现各种排序及增,删,改结点。。 代码如下: function Node(){ this.data=null; this.next=null; } function GenericList(){ this.head=null; this.current=null; //打出所有的链表结点 this.print= ...
实现单链表、循环链表、双向链表,支持增删操作 实现单链表反转 实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 【对应的 LeetCode 练习题】 Three Sum(求三数之和) 英文版: 中文版: Majority ...
实现单链表、循环链表、双向链表,支持增删操作 实现单链表反转 实现两个有序的链表合并为一个有序链表 实现求链表的中间结点 Task1 Solution 动态数组实现(扩容、增删改,合并等): 单链表及其操作(反转、合并、...
(2)通过实验,掌握动态储存分配函数的用法,掌握自引用结构,单向链表的创建、遍历、结点的增删、查找等操作 (3)了解字段结构和联合的用法 (2)错误修改后运行结
(1)每当插入一个新结点,从该结点开始向上计算各结点的平衡因子,即计算该结点的祖先结点的平衡因子,若该结点的祖先结点的平衡因子的绝对值均不超过1,则平衡二叉树没有失去平衡,继续插入结点; (2)若插入结点的某...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
10.2.4 指针变量几个问题的进一步说明 140 810.3 数组指针和指向数组的指针变量 141 10.3.1 指向数组元素的指针 142 10.3.2 通过指针引用数组元素 143 10.3.3 数组名作函数参数 146 10.3.4 指向多维数组的指针和指针...