C 语言中的遍历列表



>我正在尝试实现链表遍历,但是我的代码不起作用,我不明白为什么我重新分配了指针,但它没有粘住?


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void inserter(Node *n1, int num){
if(n1==NULL){
Node *temp =(Node*)malloc(sizeof(Node));
temp->data=num;
temp->next=NULL;
n1=temp;
}
else{
Node *trav=n1;
while(trav!=NULL){
trav=trav->next;
}
}

}

int main(int argc, char **argv)
{
Node *l1 = NULL;
inserter(l1,l2,5);
inserter(l1,l2,11);
//It goes back into the NULL bracket despite me assigning it a node?
}

这是随附的结构

typedef anode {
struct Node *next;
int data;
}Node;

感谢您的任何帮助!我对这一切还很陌生。

您正在传递指针和intinserter()。如果您修改该int,则调用函数中将看不到任何修改(我想您已经知道了(。指针也是如此:Node *只是一个保存地址的数字类型,该地址已按值传递。

如果要修改n1指向的位置,则需要取消引用它。但是,由于您不想更改n1指向的内存的内容,而是更改n1本身的值,因此需要向函数传递Node **

下面是一个快速示例:

void inserter(Node **n, int num) {
if (*n == NULL) {
*n = malloc(...);
....;
}
....
}

这样,您将全局更改n的实际值,而不仅仅是本地值。

相关内容

  • 没有找到相关文章