2.1 线性表的含义
● 线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列,而且是有顺序的。
● 数学定义
2.2 线性表的抽象数据类型
2.3 顺序存储结构
● 线性表的顺序存储结构
#define LISTSIZE 100
typedef int DataType
typedef struct SeqList
{
DataType data[LISTSIZE];
int nLength;
}SeqList;
顺序表代码操作:(含初始化、判断是否为空、删除、获取长度、查找指定元素、插入、倒置)
#define LISTSIZE 100
typedef int DataType
typedef struct Seqlist{
DataType data[LISTSIZE];#最大长度
int nLength;#这是有效长度
}SeqList;
##初始化
void initList(SeqList *list)
{
list->nLength=0;
}
##判空
void ListEmpty(SeqList *list)
{
return list->nLength==0;
}
##删除所有元素
void clearList(SeqList *list)
{
list->nLength=0;
}
## 获取线性表中元素个数
void ListEmpty(SeqList *list)
{
return list->nLength;
}
## 获取下标为i的元素
DataType* getNode(SeqList *list,int i)
{
if(i<0||i>list->nLength-1)
return NULL;
return &list->data[i];
}
##查指定元素
int locateNode(SeqList *list,DataType x)
{
for (int i =0;i<list->nLength;i++)
if (list->data==x)
return i;
return -1;
}
### 插入
bool insert (SeqList *list,int i ,DataType x)
{
if(list->nLength==LISTSIZE)
return false;
int position=i;
if (i<0)
position=0;
if (i>list->nLenth-1)
position=list->nLength;
for (int j=list->nLength-1;j>=position;j--)
list->data[j+1]=list->data[j];
{
list->data[position]=x;
list->nLength++;
return True;
}
## 两个线性表联合
void union(SeqList *a,SeqList *b)
{
if (a->nLength+b->nLength>LISTSIZE)
return ;
for (i=0;i<b->nLength;i++){
DataType e=b->data[i];
if(locateNode(a,e)==-1)
{insert(a,a->nLength,e);}
}
}
## 倒置
void reserve(SeqList *list)
{
for (int i=0;i<list->nLength/2;i++){
DataType t =list->data[i];
list->data[i]=list->data[list->nLength-1-i];
list->data[list->nLength-1-i]= t ;
}
}