用c语言编写设计一个有序顺序表,实现以下操作: 1.将元素x插入表中并保持有序; 2.查找值为x的元素,若找到则将其删除; 3.输出表中所有元素。
时间: 2024-09-27 14:09:20 浏览: 1
在 C 语言中,我们可以使用数组和指针来创建一个简单的有序顺序表,并实现上述操作。这里我们采用递增排序的方式(如升序),但请注意,这并不是最高效的数据结构,对于大规模数据,可能需要考虑其他数据结构如链表。
```c
#include <stdio.h>
// 定义顺序表节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指向下一个节点的指针
} Node;
// 初始化顺序表
Node* createList() {
Node* head = NULL;
return head;
}
// 插入元素并保持有序
void insert(Node** head, int x) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = x;
newNode->next = *head;
if (*head != NULL && x < (*head)->data) {
newNode->next = (*head)->next;
}
*head = newNode;
}
// 查找并删除值为x的元素
void deleteNode(Node** head, int x) {
if (*head == NULL) {
return;
}
Node* curr = *head;
if (curr->data == x) {
*head = curr->next;
free(curr);
return;
}
while (curr->next != NULL && curr->next->data != x) {
curr = curr->next;
}
if (curr->next != NULL) {
curr->next = curr->next->next;
free(curr->next);
}
}
// 输出表中所有元素
void printList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Node* list = createList();
// 插入元素
insert(&list, 5);
insert(&list, 3);
insert(&list, 8);
// 输出当前列表
printList(list); // 输出:3 5 8
// 删除元素并输出
deleteNode(&list, 5);
printList(list); // 输出:3 8
return 0;
}
```