2.进阶题: 实现n个整数类型数据的顺序表的逆置。如: 原顺序表为1, 2,3, 4,逆置后为4, 3, 2, 1。 具体内容如下: (1) 输入一个n个整数的顺序表; (2) 输出逆置前的内容; (3) 实现顺序表的逆置; (4) 输出逆置后的内容。用c语言实现
时间: 2024-09-27 14:03:30 浏览: 47
在C语言中,你可以通过以下步骤实现一个顺序表的逆置:
1. 定义结构体表示整数及其索引,用于存储顺序表的数据:
```c
typedef struct Node {
int data;
struct Node* next;
} ListNode;
```
2. 创建顺序表并输入元素:
```c
void inputList(ListNode** head, int n) {
*head = NULL;
for (int i = 0; i < n; i++) {
printf("请输入第%d个数字:", i + 1);
int num;
scanf("%d", &num);
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = num;
newNode->next = *head;
*head = newNode;
}
}
```
3. 输出原始内容:
```c
void printList(ListNode* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
printf("\n");
}
```
4. 实现顺序表的逆置:
```c
void reverseList(ListNode** head) {
ListNode* prev = NULL;
ListNode* current = *head;
ListNode* nextTemp = NULL;
while (current != NULL) {
nextTemp = current->next;
current->next = prev;
prev = current;
current = nextTemp;
}
*head = prev;
}
```
5. 输出逆置后的内容:
```c
void printReversedList(ListNode* head) {
if (head == NULL) {
printf("逆置后的列表为空。\n");
} else {
printList(head);
}
}
```
6. 整合以上函数,主程序调用它们:
```c
int main() {
int n;
printf("请输入列表长度:");
scanf("%d", &n);
ListNode* head = NULL;
inputList(&head, n);
printf("原始顺序表:\n");
printList(head);
reverseList(&head);
printf("逆置后的顺序表:\n");
printReversedList(head);
return 0;
}
```
当你运行这个程序,它会首先接收用户输入的整数创建顺序表,然后展示原顺序表,接着逆置列表,最后显示逆置后的结果。
阅读全文