【发布时间】:2017-03-13 15:54:27
【问题描述】:
这是我的讲师发送的示例编码的代码 sn-p。 我不知道逻辑。请耐心等待,我目前正在学习计算机科学专业的学生。编辑:这似乎是一个链表。
struct db {
int value;
struct db *next;
} *head, *tail, *curr;
void pushF()
{
int input;
system("CLS");
printf("\n\n\tInput value: ");
scanf("%d", &input);
curr = (struct db*) malloc(sizeof(struct db));
curr->value = input;
if (head == NULL) {
head = tail = curr;
head->next = NULL;
} else {
curr->next = head;
head = curr;
}
}
如果输入为 1, 我的最佳猜测是:
- 每个结构名称(head、tail 和 curr)都具有三个不同的“int 值”和 (
struct data *next) - 我不明白 - 程序开始时提示输入值
-
curr = (struct db*) malloc(sizeof(struct db));我不明白 - 将
curr的整数值设置为1 - 如果 head 是
NULL那么.. 我不明白 -
head = tail = curr- 我不明白。我最好的猜测是这是一条链条。 - 将头上的下一个指针设置为
NULL。 - else 将
curr上的 next 指针设置为 head 并将 head 设置为curr。
【问题讨论】:
-
那么你的问题到底是什么?
-
附带一点 - 研究为什么不应该转换分配的结果。我知道这来自你的讲师,但他/她这样做是错误的。
-
@ChrisTurner 解释正在发生的事情。
-
问题太宽泛了,显然有多个概念你不明白。从阅读你的笔记/教科书开始。如果您仍然有任何问题,请返回直接问题。例如: curr = (struct db*) malloc(sizeof(struct db)); [说实话,我不知道这条线是做什么的。这对我来说没有任何意义。] - 这本身就是一个问题。
-
这是一个写得很糟糕的堆栈数据结构的链表实现。列表中的每个节点(
struct db的一个实例)代表堆栈上的一个条目。value成员存储与节点关联的值,而next成员显式指向列表中的下一个元素。每次调用pushF,都会用malloc动态分配一个新的struct db对象,并将输入值写入value成员。这个新节点成为列表的头部(栈顶)。
标签: c pointers struct linked-list