C语言设计和编写程序:定义、创建和显示顺序表L(表中的数据类型为整型),编写函数实现 非递减顺序表L,插入一个元素e后,L仍然是非递减的。
时间: 2024-11-09 07:27:05 浏览: 31
在C语言中,我们可以定义一个顺序表(也称为数组)来存储整数,并通过函数实现插入操作保持非递减性。首先,我们需要一个结构体来表示节点,然后定义全局变量作为顺序表的头部。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 定义节点结构体
typedef struct Node {
int data; // 数据域
struct Node* next; // 指针域
} Node;
// 初始化顺序表
void createList(Node** head) {
*head = NULL;
}
// 插入元素并保持非递减
bool insertSorted(Node** head, int e) {
if (*head == NULL || e >= (*head)->data) { // 如果列表为空或者新元素大于等于当前元素
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = e;
newNode->next = *head;
*head = newNode;
return true;
} else {
Node* current = *head;
while (current->next != NULL && current->next->data < e) { // 遍历直到找到合适的位置或者到达末尾
current = current->next;
}
newNode = (Node*)malloc(sizeof(Node));
newNode->data = e;
newNode->next = current->next;
current->next = newNode;
return false; // 返回false表示已经不需要继续遍历,因为找到了合适位置
}
}
// 显示顺序表
void displayList(Node* head) {
Node* temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
int main() {
Node* listHead = NULL;
createList(&listHead); // 初始化空列表
// 插入元素并展示
for (int i = 0; i < 5; ++i) {
insertSorted(&listHead, i);
displayList(listHead);
}
return 0;
}
```
阅读全文