【发布时间】:2020-11-25 15:51:53
【问题描述】:
我想在每个节点中创建一个包含字符串的单链表,而不是整数。
但是,我无法实现它。有人可以告诉我实施有什么问题吗?
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
struct node {
char data;
struct node* next;
};
struct node* create(struct node* head, const char* data) {
struct node* newnode, * temp;
newnode = (struct node*)malloc(sizeof(struct node));
newnode->data = data;
newnode->next = NULL;
if (head == NULL) {
head = newnode;
temp = newnode;
}
else {
temp->next = newnode;
temp = temp->next;
}
temp->next = NULL;
return head;
}
struct node* display(struct node* head) {
struct node* temp;
temp = head;
while (temp != NULL) {
printf("%d->", temp->data);
temp = temp->next;
}
printf("NULL");
return head;
}
int main() {
struct node* head;
head = NULL;
int size, i;
char str[5];
printf("\nSize of linked list you want: ");
scanf("%d", &size);
for (i = 0; i < size; i++) {
gets(str);
head = create(head, str);
}
display(head);
return 0;
}
【问题讨论】:
-
temp->next = newnode;这里temp尚未初始化。 -
从不使用
gets。即使是琐碎的玩具问题。 唯一 可以使用gets的时间是在您演示gets的问题时。不要使用它。 -
您在另一个问题中使用了相同的 create 函数,我解释了为什么它不起作用。你可以在那里找到它,那是一天前的事。这次的额外问题是您在节点中存储了一个字符而不是字符串(char *)。当您在节点中放置一个 char * 时,您可能还想在插入时复制字符串,否则您将在测试代码中获得指向同一缓冲区的指针列表。
标签: c data-structures linked-list singly-linked-list