线性表:它是由n个数据元素组成的有限序列。(a1,a2,...an)
线性表的特征:
1.有且只有一个开始元素a1,它没有前趋,只要一个直接后趋。
2.有且只有一个终端元素an,,它没有后趋,只有一个直接前趋。
3.其它元素ai(2<=i<=n-1)内部元素,都有一个直接前趋和后趋。
线性表的特征元素之间的相邻关系,也是线性关系。
顺序结构存储,在存储单元里数据元素依次存放,顺序表可以通过基地址和每个元素所占空间计算每个元素的存储位置,并随机存取。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 10
#define Element int
typedef struct list {
Element data[MAX];
int length;
} List;
/**
初始化
*/
void initList(List *arr) {
memset(arr->data, 0, sizeof(List));
arr->length = 0;
return;
}
void ClearList(List *arr) {
arr->length = 0;
}
Element getInVal(List *arr, int i) {
if (i >= 0 && i < arr->length)
return arr->data[i];
}
/**
插入
*/
int insert(List *arr, int i, Element val) {
if (i < 1 || i > arr->length+1) {
printf("position error\n");
return 1;
}
if (arr->length >= MAX) {
printf("overflow");
return 2;
}
int s;
for(s = arr->length-1; s >= i-1; s--)
arr->data[s+1] = arr->data[s];
arr->data[i-1] = val;
arr->length++;
}
/**
**删除
**/
int delete(List *arr, int i, Element *val) {
int k;
if(i < 1 || i > arr->length) {
printf("position error\n");
return 1;
}
*val = arr->data[i];
for(k = i; k < arr->length; k++)
arr->data[k-1] = arr->data[k];
arr->length--;
return 0;
}