c - 如何在链表的开头插入节点?

标签 c data-structures linked-list

addAtBegin 有什么问题?将新创建的 node 分配给 start 后,该列表似乎是正确的,但是当控制权返回到 main 时,新值没有保存。

typedef struct node
{
    int data;
    struct node *link;
}node;

node* createList(int data)
{
    node *tempNode=(node*)malloc(sizeof(node));
    tempNode->data=data;
    tempNode->link=NULL;
    return tempNode;
}

void addAtBegin(node *start,int data)
{
    node *addedNode=(node *)malloc(sizeof(node));
    addedNode->data=data;
    addedNode->link=(start==NULL)?NULL:start;
    start=addedNode;
}

void displayNodes(node *start)
{
    node *startCopy=start;
    while(startCopy!=NULL)
    {
        printf("%d\t",startCopy->data);
        startCopy=startCopy->link;
    }
    printf("\n");
}

int main( )
{   
    node *start=createList(2);
    addAtBegin(start,1);
    displayNodes(start);
    return 0;
}

最佳答案

对我来说这看起来像是另一个列表问题,答案与大多数问题相同 - start 应该是指向指针的指针。

关于c - 如何在链表的开头插入节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989185/

相关文章:

C:指向结构内部结构元素的指针

c - 基于ncurses的程序拦截SIGWINCH后无法识别按键

java - 在链接列表中按字母顺序放置字符节点

c - 在链接列表中查找循环(​​获取段错误)

c - 在 freertos API 中使用队列

c - 可执行文件之间有什么区别?

algorithm - 求和为 n 的最少完全平方数

c - 用于非均匀大小超球体中最近邻搜索的快速空间数据结构

algorithm - 检查String是否有平衡括号的递归算法

使用链表的 C++ 堆栈