gpt4 book ai didi

c - 尝试在 C 中创建一个空链表

转载 作者:行者123 更新时间:2023-11-30 15:25:48 25 4
gpt4 key购买 nike

我正在尝试创建一个空链接列表,它会询问用户该列表可以容纳的最大术语数。 (我没有添加我的代码,因为它只是一个 printf)。然后,我必须创建一个新函数,要求用户将输入插入到之前创建的列表中。

我的问题是,如何使 create_q() 函数返回空列表?

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

typedef struct node_t {
int value;
int priority;
struct node_t *next;
}node;

typedef struct priority_linked_list {
struct name *head;
int current_size;
int max_size;
}priority_list;

typedef node *Node;
typedef priority_list *List;

void create_q(int max_terms) {

node *head = NULL;
node *next = NULL;
List *current_size = 0;
List *max_size = max_terms;

}

最佳答案

在 C 语言中,链表通常被实现为存储在堆上的一系列相互指向的节点。堆是在程序的整个生命周期中运行的持久内存区域。

当您在 C 函数中正常创建变量并且函数返回时,您创建的变量将不再可访问。但是,当您在函数中的堆上创建某些内容并且返回该函数时,您在堆上分配的数据仍然存在。但是,您无法访问它——除非该函数返回一个指针。

因此,您对 create_q() 要做的就是在堆上创建链表(使用 stdlib.h 中名为“malloc”的函数),然后返回指向第一个节点的指针,让main 函数知道在堆上的哪个位置找到第一个节点。然后第一个节点中会有一个指针,告诉程序在堆上的哪个位置找到第二个节点,依此类推。

但是,您可能以错误的方式处理链接列表。除非这是某种家庭作业项目,否则您可能不想创建一个空链接列表。链表的好处之一是它是一种动态结构,您可以轻松地在其中插入新节点。您仍然可以使用一些变量来跟踪您想要的列表的最大大小,但除非必须,否则您可能不想实际创建节点。

只要记住什么是链表即可。它是一组 float 在堆上的节点(在 C 中),每个节点存储一些数据,并包含指向堆上 float 的下一个节点的指针。要访问链表,您所需要的只是指向第一个节点的指针。要添加新节点,您只需“遍历”列表直到到达最后一个节点,然后创建一个新节点并使旧的最后一个节点指向它。

关于c - 尝试在 C 中创建一个空链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27693057/

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