1、线性表:零个或多个数据元素的有限序列。
2、线性表的顺序存储结构:用一段连续的存储单元依次存放线性表的数据元素。这种结构在获取节点的值的时候非常简单,但是在插入数据元素或者删除数据元素时,前面和后面的元素都得做相应的移动,非常浪费时间。这种结构比较审核元素个数固定,不会轻易进行数据增加或者删除的情况。
下面是针对这种结构的插入删除方法:
#filename:list.h
#define MAXSIZE 30
typedef int ElemType;
typedef struct{
ElemType data[MAXSIZE];
int length;
}SqList,* pSqList;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
Status InsertElem(pSqList L,int i,ElemType e);
Status DeleteElem(pSqList L,int i,ElemType & e);
void PrintList(pSqList L);
#filename:list.cpp
Status InsertElem(pSqList L,int i,ElemType e){
if(L->length == MAXSIZE){
return ERROR;
}
if(i < 1 || i > L->length+1){
return ERROR;
}
if(i <= L->length){
for(int k = L->length -1; k >= i-1; k--){
L->data[k+1] = L->data[k];
}
}
L->data[i-1] = e;
L->length ++;
return OK;
}
void PrintList(pSqList L){
for(int i = 0; i < L->length; ++i){
cout << L->data[i] << endl;
}
}
Status DeleteElem(pSqList L,int i,ElemType & e){
if(L->length == 0){
return ERROR;
}
if(i < 1 || i > L->length){
return ERROR;
}
e = L->data[i-1];
if(i < L->length){
for(int j = i-1; j < L->length; ++j){
L->data[j] = L->data[j+1];
}
}
L->length--;
return OK;
}
#filename:main.cpp
#include <iostream>
using namespace std;
#include "list.h"
#include "list.cpp"
int main(){
pSqList list = new SqList;
int e;
list->length = 0;
cout << InsertElem(list,1,11) << endl;
cout << InsertElem(list,2,12) << endl;
cout << InsertElem(list,1,13) << endl;
cout << DeleteElem(list,2,e) << endl;
PrintList(list);
return 0;
}
3、线性表的链式存储结构:
来源:oschina
链接:https://my.oschina.net/u/781587/blog/127585