三刀流.索隆 发表于 2021-12-19 15:32:45

求助

本帖最后由 三刀流.索隆 于 2021-12-21 17:11 编辑

我写的链表,我调试过了,这个链表根本接不上,而且temp和list是同一个指针,这就让人头大了,它们都是用malloc函数单独从堆里面申请的呀,只不过用ptr先后指向它们,它们怎么会是同一个指针

#include <stdio.h>
#include <stdlib.h>

struct Node
{
        int data;
        struct Node* next;
}node;

void add_node(Node** p, int a)
{
        Node* temp = (Node*)malloc(sizeof(Node));

        temp->data = a;
        temp->next = NULL;

        (*p)->next = temp;

//无论换成以下哪行代码都不对
        //p = &temp;
        //*p = temp;
//--------------------------------
}

void print_node(Node* p)
{
        while (NULL != p)
        {
                printf("%d", p->data);

                p = p->next;
        }
}
int main()
{
        int val = 0;
        Node* list = (Node*)malloc(sizeof(Node));
        list->data = 0;
        list->next = NULL;

        Node** ptr = &list;

        do
        {
                scanf_s("%d", &val);
                printf("\n");

                add_node(ptr,val);
        } while (-1 != val);

        print_node(list);

        return 0;
}

jhq999 发表于 2021-12-19 16:08:43

本帖最后由 jhq999 于 2021-12-19 16:13 编辑

认真点
void add_node(Node** head, int a)///////////
{
      Node* p = (Node*)malloc(sizeof(Node)),temp=*head;///////////

      p->data = a;
      p->next = NULL;//////////
      while(temp->next)temp=temp->next;///////////
         temp->next=p;//////////

//无论换成以下哪行代码都不对
      //p = &temp;
      //*p = temp;
//--------------------------------
}

三刀流.索隆 发表于 2022-1-1 13:58:21

jhq999 发表于 2021-12-19 16:08
认真点

老哥可以啊
页: [1]
查看完整版本: 求助