**
顺序表的简单实现(C语言)
**
顺序表的特点:
1、随机访问,可以在O(1)时间内找到第 i 个元素。
2、存储密度高,每个节点只存储数据元素。
3、拓展容量不方便(即使动态分配空间时间复杂度也比较高)。
4、插入、删除操作不方便,需要移动大量元素。
#顺序表的静态实现
#include <stdio.h>
#define Maxsize 10
typedef struct {
int data[Maxsize];
int length;
}SeqList;
// 初始化表
void InitList(SeqList *L){
if(L == NULL){
L->length = 0;
}
}
// 创建表
void CreateList(SeqList *L, int n){
L->length = n;
int i = 0;
for(i; i < n; i++){
// scanf("%d", &L->data[i]);
L->data[i] = i;
}
}
// 销毁表
void DestoryList(SeqList *L){
int i = 0;
for(i; i < L->length; i++){
L->data[i] = 0;
}
L->length = 0;
}
// 插入元素
void ListInsert(SeqList *L, int i, int e){
if(L->length < Maxsize && i > 0 && i < Maxsize){
int j;
for(j = L->length; j > i; j--){
//插入位置以后的元素全部后移一位
L->data[j] = L->data[j-1];
}
L->data[i] = e;
L->length++;
} else{
printf("Fail");
}
}
// 删除元素
void ListDelete(SeqList *L, int i, int *e){
if(i > 0 && i < Maxsize){
int j;
*e = L->data[i-1];
for(j = i; j < Maxsize - i; j++){
L->data[j-1] = L->data[j];
}
L->length--;
printf("已删除第%d位,值为%d的元素\n", i, *e);
} else
printf("Delete location does not exist!\n");
}
// 按值查找元素
void LocateElem(SeqList L, int e){
int i, j = 0;
for(i; i