一、线性表:零个或多个数据元素的有限序列。 ios
二、线性表的顺序存储结构:用一段连续的存储单元依次存放线性表的数据元素。这种结构在获取节点的值的时候很是简单,可是在插入数据元素或者删除数据元素时,前面和后面的元素都得作相应的移动,很是浪费时间。这种结构比较审核元素个数固定,不会轻易进行数据增长或者删除的状况。 spa
下面是针对这种结构的插入删除方法: code
#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; }
三、线性表的链式存储结构: io