gpt4 book ai didi

c - 使用C堆栈在链表中,但我的推送方法有错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:48:42 24 4
gpt4 key购买 nike

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

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

void init(node* head, node* tail){
head = (node*)malloc(sizeof(node));
tail = (node*)malloc(sizeof(node));
head->next = tail;
tail->next = tail;
}

void push(node* head, int data){

node *temp;
temp = (node*)malloc(sizeof(node));

if(temp == NULL){
printf("%s", "Out Of Memory");
}else{
temp->data = data;
temp->next = head->next;

在下一行,有打印数字 7 的 printf 方法。是为了调试。但是这个 printf 方法没有用。所以我注意到了

temp->next = head->next; 

这段代码有错误。但我找不到原因..我在考虑内存分配问题。但还是没明白..!

        printf("%d", 7);
head->next = temp;
printf("push (%d)", data);
}
}

void main(){
node* head = NULL;
node* tail = NULL;
init(head, tail);
push(head, 10);
}

最佳答案

void init(node** head, node** tail){
*head = malloc(sizeof(node));
*tail = malloc(sizeof(node));
(*head)->next = *tail;
(*tail)->next = *tail;
}

void main(){
node* head = NULL;
node* tail = NULL;
init(&head, &tail);
push(head, 10);
}

您应该通过引用传递 head 和 tail,以反射(reflect)调用函数 main() 时 head 和 tail 的更改值。

有关通过引用检查传递的更多信息 this

关于c - 使用C堆栈在链表中,但我的推送方法有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50885500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com