[简述]数据结构-线性表(c语言实现)
1. 线性表的定义
线性表是具有相同特性的数据元素的一个有限序列。
2. 线性表抽象数据类型描述
ADT List
{
数据对象:
D = { ai | 1<= i <= n,n>=0,ai 属于ElemType类型}
数据关系:
R={<ai, ai+1> | ai, ai+1属于D, i=1...n-1}
基本运算:
initList(&L): 初始化线性表
destroyList(&L): 销毁线性表
listEmpty(L): 线性表是为空
listLength(L): 线性表的长度
dispList(L): 输出线性表
getElem(L,i,&e):求线性表某元素
locateElem(L,e):按元素查找
listInsert(&L, i, e):插入元素
listDelete(&L,i,e):删除元素
}ADT List
3. 线性表的顺序存储结构 --- 顺序表
线性表中的所有元素按照其逻辑顺序依次存储到从存储器中指定位置开始的一块连续的存储空间中。
线性表的元素类型为: ElemType
线性表的长度为: length
线性表的大小为: MaxSize
线性表的顺序存储结构
typedef struct{
ElemType data[MaxSize]; // 存放元素
int length; // 顺序表当前长度
}SqList; // 顺序表类型
代码如下,C语言版, 代码已测试通过:
#include "stdio.h"
#define MAXSIZE 12
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
void CreateList(SqList **list, ElemType a[], int n)
{
int i;
if(list == NULL || *list == NULL) return ;
if(n > MAXSIZE) n = MAXSIZE;
for(i=0; i < n; i++)
{
(*list)->data[i] = a[i];
}
(*list)->length = n;
}
void InitList(SqList **list)
{
(*list) = (SqList*) malloc(sizeof(SqList));
(*list)->length = 0;
}