用c语言输入n个整数,用尾插法建立n个元素的带头结点的单链表,然后打印出来。要求把单链表的存储结构定义成一个结构体,至少包括一个变量存放数据,至少定义一个指针指示下一个元素的位置;建立和打印写成两个函数,再编写主程序调用上面两个函数。
时间: 2024-10-14 20:15:18 浏览: 37
在C语言中,我们可以创建一个名为`ListNode`的结构体来表示链表节点,包含两个部分:数据域`data`和指向下一个节点的指针`next`。以下是完整的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int data; // 存放数据
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
// 函数声明,用于插入节点和打印链表
void insertNode(ListNode** head, int num);
void printList(ListNode* head);
int main() {
// 初始化链表头节点为NULL
ListNode* head = NULL;
// 输入整数的数量
int n;
printf("请输入整数个数n: ");
scanf("%d", &n);
// 创建并插入链表节点
for (int i = 0; i < n; i++) {
insertNode(&head, i + 1);
}
// 打印链表
printf("\n链表内容:\n");
printList(head);
return 0;
}
// 插入节点函数
void insertNode(ListNode** head, int num) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); // 分配内存
if (newNode == NULL) {
printf("内存分配失败\n");
return;
}
newNode->data = num;
newNode->next = *head; // 将新节点设为当前头节点
*head = newNode; // 更新头节点指针
}
// 打印链表函数
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != NULL) {
printf("%d -> ", temp->data); // 输出节点数据
temp = temp->next;
}
printf("NULL\n"); // 输出最后一个节点后的终止符
}
```
阅读全文