参考王卓老师
目录
定义一些变量
#include <iostream> using namespace std; #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef char ElemType; #define MAXSIZE 100
实现线性表的功能
//定义顺序线性表 typedef struct { ElemType *elem; int length; }SqList; //初始化顺序线性表 Status InitList_Sq(SqList &L){ L.elem=new ElemType [MAXSIZE]; if(!L.elem)exit(OVERFLOW); L.length=0; return OK; } //销毁顺序线性表 void DestroyList(SqList &L){ if(L.elem) delete L.elem; } //清空顺序线性表 void ClearList(SqList &L){ L.length=0; } //求顺序线性表的长度 int GetLength(SqList L){ return L.length; } //判断顺序线性表是否为空 bool IsEmpty(SqList L){ if(L.length==0)return TRUE; else return FALSE; } //获取顺序表元素内容 int GetElem(SqList L,int i,ElemType &e){ if(i<1||i>L.length)return ERROR; e=L.elem[i-1]; return OK; } //顺序表顺序查找法 int LocateElem(SqList L,ElemType e){ for(int i=0;i<L.length;i++){ if(L.elem[i]==e)return i+1; } return 0; } //顺序表的插入 Status ListInsert_Sq(SqList &L,int i,ElemType e){ if(i<1||i>L.length+1)return ERROR;//i值不合法 else if(L.length==MAXSIZE)return ERROR;//储存空间满了 for(int j=L.length-1;j>=i-1;j--){ L.elem[j+1]=L.elem[j]; } L.elem[i-1]=e; L.length++; return OK; } //顺序表的删除 Status ListDelete_Sq(SqList &L,int i){ if(i<1||i>L.length)return ERROR; for(int j=i;j<L.length;j++){ L.elem[j-1]=L.elem[j]; } L.length--; return OK; }
线性表应用实例
//顺序应用实例
int main(){
SqList L;
InitList_Sq(L);
ListInsert_Sq(L,1,'a');
ListInsert_Sq(L,2,'b');
cout<<LocateElem(L,'b')<<endl;
ElemType e;
GetElem(L,1,e);
cout<<e<<endl;
ListDelete_Sq(L,1);
GetElem(L,1,e);
cout<<e<<endl;
cout<<LocateElem(L,'b')<<endl;
DestroyList(L);
return 0;
}