链表删除问题,与常规删除节点不同
删除要求:输入一个数字,查找所有此数字的节点全部删
我只能做到删除头,中间,末尾节点,单一的,如果有两个数是放在一起就会出现bug,甚至假如是3个数一起放在中间或者末尾又该怎么办。
void delet(int disnum,n *head) {
n t,q,p;
t=*head;
while(t) {
if(t->data==disnum) {
if(t==*head) {
*head=(*head)->next;
free(t);
} else if(t->next==NULL) {
q->next=NULL;
free(t);
} else { //bug everywhere
q->next=t->next;
free(t);
}
}
}
q=t;
t=t->next;
} //怎么把这个代码改造成我想要的,,,求助啊,,,,又没有逻辑了,,
我只能做到删除头,中间,末尾节点,单一的,如果有两个数是放在一起就会出现bug,甚至假如是3个数一起放在中间或者末尾又该怎么办。
void delet(int disnum,n *head) {
n t,q,p;
t=*head;
while(t) {
if(t->data==disnum) {
if(t==*head) {
*head=(*head)->next;
free(t);
} else if(t->next==NULL) {
q->next=NULL;
free(t);
} else { //bug everywhere
q->next=t->next;
free(t);
}
}
}
q=t;
t=t->next;
} //怎么把这个代码改造成我想要的,,,求助啊,,,,又没有逻辑了,,
...全文
相关推荐
c++链表操作
**常规情况处理**:找到待删除节点及其前一个节点,然后删除该节点。5. **更新长度**:每次删除后,链表长度减 1。
CS问题:JavaScript中带有自动测试的计算机科学问题(常规,数据结构,排序,树,字符串和链接列表)(开玩笑)
**链表**:链表是一种线性数据结构,其中元素不是连续存储的。每个元素(节点)包含数据和指向下一个节点的引用。链表有单链表、双链表和循环链表等形式,支持插入、删除和查找操作。
C++删除链表中间节点的方法
这里的“中间”指的是链表长度为奇数时,删除正中间的节点;链表长度为偶数时,删除靠近头节点的那一半中间位置的节点。### 解题思路解决这个问题的关键在于找到链表的中间节点。一种有效的方法是使用快慢指针。
C语言实现单向链表的创建、插入,删除节点,和2个链表合并
,包括创建链表、插入节点、删除节点、判断链表是否有环以及合并两个已排序的链表。
数据结构c语言版链表删除重复节点
这个函数需要遍历链表,检查当前节点与后续节点的数据是否相同。如果相同,则将当前节点指向下一个节点的下一个节点,跳过重复的节点。


