#include //c++頭文件
using namespace std;
#define LIST_INIT_SIZE 20 //預(yù)定義常量
#define LISTINCREMENT 5
#define OK 1
#define ERROR 0
typedef int ElemType; //定義類型
typedef int Status;
typedef struct //線性表結(jié)構(gòu)體定義
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList &L) //創(chuàng)建空的線性表
{
L.elem=new ElemType[LIST_INIT_SIZE]; //申請空間
L.length=0; //令表中數(shù)據(jù)長度為零
L.listsize=LIST_INIT_SIZE; //將所申請的空間給予元素空間
return OK;
}
Status CreateList_Sq(SqList &L,int n) //創(chuàng)建一個(gè)線性表
{
int i;
InitList_Sq(L); //創(chuàng)建空表
if(n>L.listsize) //保證空間足夠
{
//續(xù)開辟空間
}
L.length=n;
cout<<"please input "<>L.elem[i];
return OK;
}
Status OutputList_Sq(SqList L) //輸出線性表
{
int i;
cout<<"The list is:";
for(i=0;iL.length+1) // (1)判斷插入元素下標(biāo)i的合法性(1---L.length+1)
return ERROR;
if(L.length>=L.listsize) //判斷空間是否夠用
{
//續(xù)開辟空間
}
for(j=L.length-1;j>=i-1;j--) // (2) 下標(biāo)L.length-1----i-1的元素,后移一個(gè)位置
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e; // (3) 插入e(下標(biāo)i-1)
L.length++; // (4) 數(shù)據(jù)元素長度加一
return OK;
}
Status ListDelete_Sq(SqList &L,int i,ElemType &e) //刪除元素,并用e返回該數(shù)據(jù)
{
int *p,*q;
if(i<1||i>L.length) // (1) 判斷插入元素下標(biāo)i的合法性(1---L.length+1)
return ERROR;
p=&(L.elem[i-1]); // (2) 取第i個(gè)元素的地址,并用e取其中數(shù)據(jù)
e=*p;
q=L.elem+L.length-1; //最后(表尾)元素的位置
for(++p;p<=q;++p)
*(p-1)=*p; // (3) 元素依次左移
--L.length; // (4) 元素長度減一
return e;
}
Status ListLength_Sq(SqList &L) //求元素長度
{
int i,p=0;
for(i=0;iL.length)
return ERROR;
else{
p=&(L.elem[i-1]);
e=*p;
}
return e;
}
Status DestroyList(SqList &L) //銷毀線性表
{
free(L.elem); //釋放空間
L.elem=NULL;
L.length=0;
L.listsize=0;
cout<< "線性表已銷毀! "<
網(wǎng)站名稱:數(shù)據(jù)結(jié)構(gòu)-線性表操作
鏈接URL:http://weahome.cn/article/pcoopj.html