1. 程式人生 > 其它 >資料結構順序表基本操作 C++

資料結構順序表基本操作 C++

#include<stdio.h>
#define MAXSIZE 10 //預設的最大長度

//順序表型別定義
typedef struct 
{
    int *elem;  //指示動態分配陣列的指標
    int length; //順序表的當前長度
}SqList;

//初始化順序表
bool InitList(SqList &L){
    L.elem=new int[MAXSIZE]; //為順序表分配空間
    if(!L.elem) //儲存分配失敗
        return false;
    L.length=0;
    return true;
}

//銷燬順序表
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; } //順序表的取值(取第i個元素) bool GetElem(SqList L,int
i,int &e){ if(i<1 || i>L.length) //判斷i值是否合理 return false; e=L.elem[i-1]; return true; } //插入 bool ListInsert(SqList &L,int i,int e){ if(i<1 ||i>L.length+1) return false; //插入位置不合法 if(L.length==MAXSIZE) return false; //儲存空間已滿,插入失敗 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 true; } //順序表的查詢 int LocateElem(SqList L,int e){ for(int i=0;i<L.length;i++) if(L.elem[i]==e) return i+1; return -1; //查詢失敗 } //刪除 bool ListDelete(SqList &L,int i){ if(i<1 ||i>L.length) return false; //刪除位置不合法 for(int j=i;j<=L.length-1;j++) L.elem[j-1]=L.elem[j]; //被刪除元素之後的元素前移 L.length--; return true; } //遍歷 void PrintList(SqList L){ for(int i=0;i<L.length;i++) printf("L.elem[%d]=%d\n",i,L.elem[i]); } int main(){ //定義和初始化 SqList L; InitList(L); //插入元素 for(int i=1;i<7;i++) ListInsert(L,i,i); //遍歷 PrintList(L); //取值 int e; GetElem(L,3,e); printf("第三個元素=%d\n",3,e); //查詢 printf("元素3的位置:%d\n", LocateElem(L,3)); //刪除元素3 ListDelete(L,3); //遍歷 PrintList(L); return 0; }