我只是在学习链表,我写了以下代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct linkedList
{
char name[100];
struct linkedList *next;
};
struct linkedList *head = NULL;
void main()
{
struct linkedList *node1,*node2;
node1 = (struct linkedList*)malloc(sizeof(struct linkedList));
strcpy(node1->name, "aaa");
node1->next = NULL;
head = node1;
node2 = (struct linkedList*)malloc(sizeof(struct linkedList));
strcpy(node2->name, "bbb");
node1->next = node2;
node2->next = NULL;
}
我不明白这是一个有效的链表吗
我必须创建相同的"节点"名称吗?或者我可以使用"node1"node2"
在我看来,我写的等于:
head---->|"aaa"|addr_to_node2|---->|"bbb"|NULL |
这是真的吗
如何打印此链接列表?
谢谢!
以下是如何打印链接列表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct linkedList
{
char name[100];
struct linkedList *next;
};
struct linkedList *head = NULL;
int main()
{
struct linkedList *node1,*node2;
node1 = (struct linkedList*)malloc(sizeof(struct linkedList));
strcpy(node1->name, "aaa");
node1->next = NULL;
head = node1;
node2 = (struct linkedList*)malloc(sizeof(struct linkedList));
strcpy(node2->name, "bbb");
node1->next = node2;
node2->next = NULL;
while(node1!=NULL)
{
printf("%sn",node1->name);
node1 = node1->next;
}
return 0;
}
它是有效的。
我必须创建相同的"节点"名称吗?或者我可以使用"node1"node2"?
您可以使用任何名称,因为它是一个常规变量。
实际上,您创建的结构不是链表,而是链表节点。一个节点包含信息和指向下一个节点的指针,而列表本身应该包含指向头节点和尾节点的指针(用于快速插入)此外,请考虑添加用于在此列表中添加和删除项目的函数。