//--------------------------順序表的存儲結構--------------------------
#define MAXSIZE 100 //順序表可能達到的最大長度
typedef struct{
Elemtype *elem; //存儲空間的基位址
int length; //目前長度
}SqList; //順序表的結構類型SqList(俗稱結構名為SqList)
//----------------------多項式的順序存儲結構類型定義------------------
#define MAXSIZE 100 //多項式可能達到的最大長度
typedef struct{
float cofe; //系數
int expn; //指數
}Polynomial; //結構名
typedef struct{
Polynomial *elem; //存儲空間的基位址
int length; //多項式中目前項的個數
}SqList; //多項式的順序存儲結構類型為SqList
//---------------------圖書表的順序存儲結構的類型定義----------------
#define MAXSIZE 10000 //圖書表可能達到的最大長度
typedef struct{
char no[20]; //圖書ISBN(圖書的編号)
char name[50]; //圖書名字
float price; //圖示價格
}Book;
typedef struct{
Book *elem; //存儲空間的基位址
int length; //圖書表中目前圖書的個數
}SqList; //圖書表的順序存儲結構類型為Sqlist
//以上述定義為前提的情況下
SqList L; //變量定義語句
//将L定義為SqList類型的變量,便可以使用L.elem[i-1]通路表中位置序号為i的圖書的相關記錄
順序表基本操作的實作
//----------------------順序表的初始化------------------------------
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];//為順序表配置設定一個大小為MAXSIZE的數組空間
L.length=0;//空表長度為零
return OK; //Status為OK
}
//---------------------順序表的取值---------------------------------
Status Getelem(SqList L,int i,ElemType &e)
{
if(i<1||i>L.length)
return ERROR;判斷i值是否合理,若不合理傳回ERROR
e=L.elem[i-1];
return OK;
}
//--------------------順序表的查找------------------------------
int LocateElem(SqList L,ElemType e)//按值查找
{//在順序表中查找值為e的元素,傳回其位置序号
for(i=0;i<L.length;i++)
if(L.elem[i]==e)
return i+1;//查找成功,傳回位置序号i+1
return 0;//查找失敗,傳回0
}
//-----------順序表的插入--------------
Status ListInsert(SqList &L,int i,ElemType e)
{//在順序表L中的第i個位置插入新元素e,i值得合法範圍為1<=i<=L.length+1
if((i<1)||(i>L.length+1)) //i值不合法
return ERROR;
if(L.length==MAXSIZE)//目前存儲空間已滿
return ERROR;
for(j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j];//插入位置及之後的元素後移
L.elem[i-1]=e;//将新元素e插入第i個位置
++L.length; //表長加1
return OK;
}
//-------------順序表的删除-----------------
Status ListDelete(SqList &L,int i)
{//在順序表L中删除第i個元素,i值得合法範圍為1<=i<=L.length
if(i<1||i>L.length )//i值不合法
return ERROR;
for(j=i;j<=L.length-1;j++)
L.length[j-1]=L.length[j];//被删除元素之後的元素前移
--L.length;//表長減1
return OK;
}