c语言编写算法,实现在非递减有序顺序表中插入给定元素、查找给定元素在顺序表中的位置、删除给定元素、输出表长度及检测表状态功能
时间: 2023-05-11 22:07:20 浏览: 119
数据结构 顺序表的插入与删除算法的C语言实现
4星 · 用户满意度95%
答案:
以下是 C 语言编写的算法,实现在非递减有序顺序表中插入给定元素、查找给定元素在顺序表中的位置、删除给定元素、输出表长度及检测表状态功能:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = 0;
}
int ListLength(SqList L) {
return L.length;
}
int ListInsert(SqList *L, int elem) {
if (L->length == MAXSIZE) {
return -1;
}
int i;
for (i = L->length - 1; i >= 0 && L->data[i] > elem; i--) {
L->data[i + 1] = L->data[i];
}
L->data[i + 1] = elem;
L->length++;
return 0;
}
int ListSearch(SqList L, int elem) {
int i;
for (i = 0; i < L.length && L.data[i] <= elem; i++) {
if (L.data[i] == elem) {
return i;
}
}
return -1;
}
int ListDelete(SqList *L, int elem) {
int i, j;
for (i = 0; i < L->length && L->data[i] < elem; i++);
if (i >= L->length || L->data[i] > elem) {
return -1;
}
for (j = i; j < L->length - 1; j++) {
L->data[j] = L->data[j + 1];
}
L->length--;
return 0;
}
int ListCheck(SqList L) {
int i;
for (i = 0; i < L.length - 1; i++) {
if (L.data[i] > L.data[i + 1]) {
return -1;
}
}
return 0;
}
int main() {
SqList L;
InitList(&L);
ListInsert(&L, 3);
ListInsert(&L, 1);
ListInsert(&L, 2);
ListInsert(&L, 5);
ListInsert(&L, 4);
printf("List length: %d\n", ListLength(L));
printf("List status: %d\n", ListCheck(L));
printf("List search 2: %d\n", ListSearch(L, 2));
ListDelete(&L, 3);
printf("List length: %d\n", ListLength(L));
printf("List status: %d\n", ListCheck(L));
return 0;
}
```
这个算法实现了在非递减有序顺序表中插入给定元素、查找给定元素在顺序表中的位置、删除给定元素、输出表长度及检测表状态功能。
阅读全文