用C语言写一个程序,将一个顺序表存放在一个一维数组中的前n个数组元素位置,请编写一个顺序表的程序,将这个顺序表原地逆置,并输出原来顺序表和逆置后的顺序表
时间: 2024-09-25 20:01:55 浏览: 38
在C语言中,我们可以创建一个顺序表结构体表示存储在一维数组中的元素,并提供函数来逆置这个列表。首先,我们定义一个简单的顺序表节点和头结点结构:
```c
typedef struct {
int data; // 节点数据
struct Node *next; // 指向下一个节点的指针
} Node;
typedef struct {
Node *head;
int size;
} List;
```
接下来,我们编写函数用于插入、删除和逆置顺序表:
```c
// 插入元素到顺序表的头部
void insert(List *list, int value) {
Node *new_node = (Node*)malloc(sizeof(Node));
new_node->data = value;
new_node->next = list->head;
list->head = new_node;
list->size++;
}
// 逆置顺序表
void reverse(List *list) {
Node *prev = NULL, *current = list->head, *next;
while (current != NULL) {
next = current->next;
current->next = prev;
prev = current;
current = next;
}
list->head = prev;
}
// 打印顺序表
void print_list(const List *list) {
Node *temp = list->head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
```
现在你可以像这样使用这些函数来创建、填充、逆置并打印顺序表:
```c
int main() {
List list;
list.head = NULL;
list.size = 0;
// 填充顺序表
for(int i=1; i<=5; ++i) {
insert(&list, i);
}
printf("Original list:\n");
print_list(&list);
// 逆置顺序表
reverse(&list);
printf("\nReversed list:\n");
print_list(&list);
return 0;
}
```
运行此程序,你会看到原始顺序表和逆置后的顺序表。
阅读全文