C语言练习题-C语言练习题实例72
题目:创建一个链表。
程序分析:通过定义一个结构体 LNode
来表示链表的节点,包括一个整型数据和一个指向下一个节点的指针。然后,定义 CreateList()
函数用于创建链表,并通过用户输入节点的数据来初始化链表。最后,定义 print()
函数用于遍历链表并输出节点的数据。
实例
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
int data;
struct LNode *next;
} LNode, *LinkList;
LinkList CreateList(int n);
void print(LinkList h);
int main() {
LinkList Head = NULL;
int n;
printf("请输入链表的节点个数:");
scanf("%d", &n);
Head = CreateList(n);
printf("刚刚建立的链表元素的值为:\n");
print(Head);
printf("\n\n");
system("pause");
return 0;
}
LinkList CreateList(int n) {
LinkList L, p, q;
int i;
L = (LNode*)malloc(sizeof(LNode));
if (!L)
return NULL;
L->next = NULL;
q = L;
for (i = 1; i <= n; i++) {
p = (LinkList)malloc(sizeof(LNode));
printf("请输入第%d个元素的值:", i);
scanf("%d", &(p->data));
p->next = NULL;
q->next = p;
q = p;
}
return L;
}
void print(LinkList h) {
LinkList p = h->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
}
在上述代码中,我们定义了一个结构体 LNode
,用于表示链表的节点,包括一个整型数据 data
和一个指向下一个节点的指针 next
。
然后,我们定义了 CreateList()
函数,用于创建链表。通过循环获取用户输入的节点数据,并将其保存到新建节点中,然后按照链表的顺序连接这些节点,最终返回链表的头节点。
在 main()
函数中,我们首先获取用户输入的链表节点个数 n
,然后调用 CreateList()
函数创建链表,并将返回的链表头节点保存在 Head
变量中。
接下来,我们调用 print()
函数,遍历链表并输出节点的数据。
最后,程序通过返回 0
来结束程序的执行。