题目描述 头插法创建一个含有n个整型元素的单链表,并输出该单链表中的n个元素。 输入 第一行是一个整数n,表示单链表中的元素个数; 第二行逆位序输入n个元素(以空格间隔)。 输出 输出单链表中的所有元素,用单个空格作为元素间的分隔符。编写c语言代码
时间: 2024-10-05 09:01:47 浏览: 67
单链表 创建 头插法 尾插法 就地逆置
5星 · 资源好评率100%
题目要求你在C语言中实现一个功能,首先你需要创建一个包含n个整型元素的单链表,然后按照逆序的顺序插入节点,并最后输出整个链表的内容。这里是一个简单的步骤:
1. 定义链表结构体,包括一个整数值`data`和一个指向下一个节点的指针`next`。
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
2. 创建一个函数来初始化链表并添加逆序输入的元素。这个函数需要接受一个`int`类型的数组和其长度`n`作为参数。
```c
void insertInReverse(int arr[], int n, Node** head) {
for (int i = n - 1; i >= 0; i--) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = arr[i];
newNode->next = *head;
*head = newNode;
}
}
```
3. 另一个函数用于遍历链表并打印元素。
```c
void printList(Node* head) {
if (head == NULL) {
printf("Empty list.\n");
return;
}
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
```
4. 主函数中调用上述两个函数来完成整个过程。
```c
int main() {
int n;
scanf("%d", &n);
int arr[n]; // 输入元素到数组中
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
Node* head = NULL;
insertInReverse(arr, n, &head); // 创建逆序链表
printList(head); // 输出链表内容
return 0;
}
```
当你运行这个程序,它会读取输入的整数序列,创建逆序链表,并按照逆序顺序显示每个元素。
阅读全文