单链表-删除链表的节点出现问题

问题描述

删除链表的节点出现问题

我创建了一个链表,链表的第一个节点不是空白的。我想用free函数删除第一个节点,发现出错。删除其他的节点没有问题。不知道什么缘故。

解决方案

你的链表怎么定义的?

typeof struct Node
{
Node next;
}
Node * head这样定义的么?
那么你删除首节点要这么做
prehead = head;
head = head->next;
free(prehead);

解决方案二:

删除节点时:
Node *s,*p;
s=p->next;
p->next=s->next;
free(s):
删除头节点
s->next=head->next
free(head);

解决方案三:

链表内的节点删除

时间: 2024-12-03 22:30:25

单链表-删除链表的节点出现问题的相关文章

python实现:删除链表中等于给定值val的所有节点.求代码学习

问题描述 python实现:删除链表中等于给定值val的所有节点.求代码学习 例如:给出链表 1->2->3->3->4->5->3, 和 val = 3, 需要返回删除3之后的链表:1->2->4->5. 解决方案 python怎么考虑链表,是用类来实现链表节点吗? 如果不是,就简单了. def remove(arr): #arr=[1,2,3,3,4,5,3] arr_len = len(arr) for i in range(0,arr_len)

c-关于链表删除节点及打印的两个错误

问题描述 关于链表删除节点及打印的两个错误 //遍历一般线性表,删除位于键值为负节点之后的所有节点 #include #include #include #include struct example { int input; struct example* next; }; typedef struct example EXAMPLE; void creat (EXAMPLE* head); void remove (EXAMPLE* head); void print (EXAMPLE* h

c语言链表删除节点问题

问题描述 c语言链表删除节点问题 #include #define NUll 0#include struct stu{ char name[6]; int xuehao; int grade; struct stu next;};typedef struct stu STU;main(){ STU *p*p_start*p2*p_print*p_charu*p_charu2; int ixuehao; //输入 for (i=0;i { p=(STU *)malloc(sizeof(STU))

[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出

题目 描述: 题目描述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]只需要完成该函数功能算法,中

删除链表的节点,然后再查询,编号会错误

问题描述 删除链表的节点,然后再查询,编号会错误 #include #include #include #include using namespace std; typedef int datatype; typedef struct person { datatype score; char name[20]; int number; struct person *llink, *rlink; }PE; void display(PE *head) { PE *p; cout << end

删除链表节点(java)

问题描述 删除链表节点(java) //deleteNode() O(1)= ((n-1)*O(1) + O(n)/2) static void deleteNode(Nodes head,Nodes x){ if(head == null || x == null) return ; //不是尾节点 if(x.next!=null){ Nodes temp = x.next; x.next = temp.next; x.data = temp.data; } //只有一个节点,头结点(尾节点)

[经典面试题]在O(1)时间删除链表结点

[题目] 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {     int        value;     struct ListNode*  next; }; 函数的声明如下: void DeleteNode(ListNode* head,ListNode* node); [思路] 这是一道广为流传的Google面试题,能有效考察我们的编程基本功,还能考察我们的反应速度,更重要的是,还能考察我们对时间复杂度的理解. 在链表中

Cracking the Coding Interview:: 寻找有环链表的环路起始节点

给定一个有环链表,实现一个算法返回环路的开头节点. 这个问题是由经典面试题-检测链表是否存在环路演变而来.这个问题也是编程之美的判断两个链表是否相交的扩展问题. 首先回顾一下编程之美的问题. 由于如果两个链表如果相交,那么交点之后node都是共享(地址相同)的,因此最简单暴力的方法就是两个for循环,判断该链表的node是否属于另外一个链表.但是这个算法复杂度是O(length1 * length2).如果链表较长,这个复杂度有点高了. 当然也可以遍历其中某个链表,将node的地址存储hash

视频-c#链表问题,包括最基础的单链表双链表以及循环链表的使用

问题描述 c#链表问题,包括最基础的单链表双链表以及循环链表的使用 新手,最近在学c#,请问有谁知道关于链表的视频,包括单链表,单循环链表,双循环链表等等,从链表最基础的开始讲的视频,里面介绍使用链表最基础的代码,谢了谢了!