insertAtHead():从键盘读入正整数n,再读入n个升序整数,用头插法建立带表头结点的降序单循环链表 La;例如输入n为4,然后依次输入2,5,7,8,头插法创建单循环链表,c语言
时间: 2024-10-06 15:02:05 浏览: 36
输入两个正整数m和n,求其最大公因数和最小公倍数
在 C 语言中,你可以使用结构体定义链表节点,并编写 `insertAtHead()` 函数来实现头插法构建降序单循环链表。首先,定义一个链表节点:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
```
接下来,定义头结点和插入函数:
```c
Node* head = NULL; // 初始化头结点
void insertAtHead(int num) {
Node* newNode = (Node*)malloc(sizeof(Node)); // 分配内存
if (!newNode) {
printf("Memory allocation failed.\n");
return;
}
newNode->data = num;
// 将新节点插入到头结点之前并更新头指针
newNode->next = head;
head = newNode;
// 如果链表非空,设置最后一个节点的next指向头结点形成循环
if (head != NULL) {
head->next = newNode;
}
}
```
为了模拟用户输入并按顺序插入值,你需要一个主循环来接收用户的输入,然后调用上述函数:
```c
int main() {
int n, input;
printf("Enter the number of elements to be inserted: ");
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
scanf("%d", &input);
insertAtHead(input); // 插入元素
}
// 打印链表(这里只是一个示例,实际打印可能会需要遍历整个链表)
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
return 0;
}
```
阅读全文