c - 在C中删除链表的第一个元素
问题描述
看似简单的 C 代码似乎不允许我从链表中删除第一个元素。但是,我可以成功删除任何其他单个元素,并且可以成功删除整个链接列表。
typedef struct list{
int data;
struct list * next;
} list;
void remove_element(list * node, unsigned int index){
if (node == NULL)
exit(-1);
list *currElem = node;
if (index == 0) {
node = node->next;
currElem->next = NULL;
free(currElem);
return;
}
产生以下内容:“free(): invalid pointer: 0xbfabb964”
我对所有其他操作功能都遵循了相同的格式,没有任何问题。论坛上的类似主题似乎没有处理这个特定问题。
解决方案
您可以阅读此 pdf 中有关 Push 功能的说明: http ://cslibrary.stanford.edu/103/
这就是 c 在心理上变得时髦的地方。您本能地想要将指针标记为指针,它就是。但它是一个指针值,而不是指针引用。这就像C神性的圣灵。三巨头。C 通过值而不是地址/引用将参数传递给函数。那么,如何通过引用传递变量呢?请记住,解决方案是如此明显,一个星期对我来说真的没有意义,我向上帝发誓。
推荐阅读
- python - 占用特定端口的系统空闲进程
- android-glide - Glide 不会从服务器重新加载图像
- postgresql - 每次修改行时,我可以在 Postgres 数据库上的 *view* 中添加一个带有更新时间戳的列吗?
- typescript - typescript - 具有属性功能的多级 groupby
- c# - 当输入框的值实时> 8时,在输入框下方显示一个标签(xamarin.forms)
- excel - 如何从几个excel文件中获取信息到某个列的主文件中?
- python - 代码显示 SyntaxError : multiple statements,但我不知道错误在哪里
- c# - .net 核心从控制器返回的响应中的一些内容已意外更改
- java - List 迭代器是否支持删除?
- chart.js - chat.js“阶梯线图”是否可以在没有下一个数据点的情况下呈现阶梯线