c - C:在列表末尾添加一个元素
问题描述
我想在列表末尾添加一个项目。我不明白为什么程序正在编译,但随后出现问题并停止执行。注释函数的最后一行一切正常,但显然它丢失了指向列表最后一个元素的指针。我认为这与“ptr”无法修改其“指针”有关。有人可以帮助我吗?谢谢
void add_element(struct element *ptr, int item) {
while(ptr != NULL) {
ptr = ptr->pointer;
}
struct element *ptr2;
ptr2 = (struct element*)malloc(sizeof(struct element));
ptr2->number = item;
ptr2->pointer = NULL;
ptr->pointer = ptr2; }
解决方案
在代码的最后一行,您不想为 赋值ptr->pointer
,但在您的 while 循环中,您的条件说:如果 ptr 不为 NULL 我们继续,所以在退出您的 while 循环后ptr
等于NULL
。
要解决您的问题,请使用此 while 循环:
while(ptr->pointer != NULL) {
ptr = ptr->pointer;
}
推荐阅读
- javascript - 如何遍历插入正确位置的 DOM 拾取节点
- php - 根据某些条件显示/隐藏菜单选项
- sql - 如何使用 python 将 Null 值从文件插入到 teradata 表。它插入为 NaN 代替表中的 Null 值
- node.js - 如何注销验证用户
- asp.net-mvc - 路由配置不带参数
- formatting - 提取具有与内容相关联的样式的word文档
- c# - 不支持 Xamarin 反射 Assembly.LoadFile
- java - 如何在 Windows 上增加 Tomcat 堆内存
- camunda - 在 Camunda 嵌入式表单中,如何指定绑定的变量范围?
- javascript - 使用日期列在 Google App 脚本中创建表