利用C语言实现了顺序表的初始化,创建,插入,删除,打印功能
代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef int elemtype;
#define LIST_INIT_SIZE 20
#define LISTINCREMENT 10
typedef struct List {
elemtype * list;
int maxsize;
int size;
} List;
int InitList(List &L) {
L.list = (elemtype *)malloc(LIST_INIT_SIZE * sizeof(elemtype));
if (!L.list)
exit(0);
L.maxsize = LIST_INIT_SIZE;
L.size = 0;
}
int Build(List &L, int n) {
int temp;
if ((n > L.maxsize) || (n < 1)) {
printf("数据个数超出容量或为0!请重新输入\n");
scanf("%d", &n);
}
L.size = n;
for (int i = 0; i < n; i++) {
printf("请输入第%d个数据\n", i + 1);
scanf("%d", &L.list[i]);
}
//使线性表保持升序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n-1; j++) {
if (L.list[j] > L.list[j + 1]) {
temp = L.list[j + 1];
L.list[j + 1] = L.list[j];
L.list[j] = temp;
}
}
}
if (L.size != 0)
return 1;
}
int Insert(List &L, int x) {
int i;
for (i = 0; i < L.size; i++) {
if (x < L.list[i])
{
break;
}
}
for (int j = L.size - 1; j >= i; j--) {
L.list[j + 1] = L.list[j];
}
L.list[i] = x;
L.size++;
return 1;
}
int Delet(List &L, int m) {
int i, k = 0;
for (i = 0; i < L.size; i++) {
if (L.list[i] == m) {
k++;
}
}
for (int s = 0; s < k; s++) {
for (i = 0; i < L.size; i++) {
if (L.list[i] == m)
break;
}
for (int j = i; j < L.size; j++) {
L.list[j] = L.list[j + 1];
}
L.size--;
}
return 1;
}
void print(List &L) {
for (int i = 0; i < L.size; i++) {
printf("%d ", L.list[i]);
}
printf("\n");
}
int main()
{
int n, x, m;
List L;
if (InitList(L))
printf("线性表初始化成功!\n");
printf("请输入要录入的数据个数");
scanf("%d", &n);
if (Build(L, n))
printf("线性表建立成功!");
print(L);
printf("请输入要插入的数据");
scanf("%d", &x);
if (Insert(L, x))
printf("插入成功!\n");
print(L);
printf("请输入要删除的数据");
scanf("%d", &m);
if (Delet(L, m))
print(L);
system("pause");
return 0;
}