用C语言编写程序void InsertAtHead(LinkList &La,int n):从键盘读入正整数n,再读入n个升序整数,用头插法建立带表头结点的降序单链表L a
时间: 2024-09-30 18:03:53 浏览: 36
在C语言中,`InsertAtHead`函数的作用是从键盘输入插入到单链表头部的操作。这里我们假设有一个名为`LinkList`的结构体表示链表,包含一个整数值`data`和一个指向下一个节点的指针`next`。下面是一个简单的函数实现示例:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc用于动态内存分配
// 定义链表结构体
typedef struct Node {
int data;
struct Node *next;
} LinkNode;
// 插入新元素到链表头部的函数
void InsertAtHead(LinkList *&La, int n) {
// 动态创建新的链表节点
LinkNode* newNode = (LinkNode*) malloc(sizeof(LinkNode));
if (!newNode) { // 检查内存分配是否成功
printf("Memory allocation failed.\n");
return;
}
// 输入数据并存储在新节点
scanf("%d", &newNode->data);
// 将新节点设置为当前链表的头结点,并更新头指针
newNode->next = La; // 将新节点的next指向当前头节点
La = newNode; // 更新头指针指向新节点
// 递归插入剩余元素,如果还有n-1个元素需要插入
if (n > 1) {
InsertAtHead(La, n - 1); // 调用自身处理剩余的n-1个数字
}
}
int main() {
LinkList La; // 初始化空链表
int n;
printf("Enter the number of integers to insert: ");
scanf("%d", &n);
InsertAtHead(&La, n); // 开始插入元素
// 打印链表内容(这里仅展示基本思路,实际可能还需要遍历打印)
LinkNode* temp = La;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
return 0;
}
```
阅读全文