C语言完成对链表的降幂输出
时间: 2023-07-04 08:17:23 浏览: 138
c语言实现链表的操作
假设链表节点的数据类型为int,可以按照以下步骤完成链表的降幂输出:
1. 定义一个指针p指向链表头节点。
2. 定义一个数组arr,用于存储链表节点的值。
3. 遍历链表,将节点的值依次存入数组arr中。
4. 对数组arr进行降序排序。
5. 遍历数组arr,将每个元素输出。
下面是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void insert(Node **head, int data) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = data;
new_node->next = *head;
*head = new_node;
}
void print_list(Node *head) {
Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
}
void print_list_desc(Node *head) {
Node *p = head;
int count = 0;
while (p != NULL) {
count++;
p = p->next;
}
int arr[count];
p = head;
int i = 0;
while (p != NULL) {
arr[i] = p->data;
p = p->next;
i++;
}
for (int j = 0; j < count; j++) {
for (int k = j + 1; k < count; k++) {
if (arr[j] < arr[k]) {
int temp = arr[j];
arr[j] = arr[k];
arr[k] = temp;
}
}
printf("%d ", arr[j]);
}
}
int main() {
Node *head = NULL;
insert(&head, 5);
insert(&head, 2);
insert(&head, 3);
insert(&head, 1);
insert(&head, 4);
printf("原始链表:");
print_list(head);
printf("\n降幂输出:");
print_list_desc(head);
printf("\n");
return 0;
}
```
输出结果为:
```
原始链表:4 1 3 2 5
降幂输出:5 4 3 2 1
```
阅读全文