1. 程式人生 > >順序線性表的有關操作(建立,銷燬,插入,查詢,刪除等)

順序線性表的有關操作(建立,銷燬,插入,查詢,刪除等)

#include<stdio.h>
#include <cstdlib>//支援庫函式 
#include<conio.h>
#define MAXSIZE 100
typedef struct{
int *elem;
int length;
}SqList;
//建立空表 
int InitList(SqList &L){
L.elem=new int[MAXSIZE];
if(!L.elem) {
printf("分配空間失敗!\n"); 
exit(1);
}
L.length=0;
printf("建立成功!\n"); 
return 0;
}


//遍歷(輸出資料)
void TraverseList(SqList L){
int i;
for(i=1;i<=L.length;i++){
printf("%d ",L.elem[i-1]);
}
printf("\n");

//插入元素 
int ListInsert(SqList &L,int i,int e){
if(i<1||i>(L.length+1)){
printf("插入失敗!");
return -1;
}else if(L.length==MAXSIZE){
printf("插入失敗!");
return -1;
}
int j=0;
for(j=L.length-1;j>=i-1;j--){
L.elem[j+1]=L.elem[j];
}
++L.length;
L.elem[i-1]=e;
printf("插入成功!");
printf("\n"); 
return 0;
}
//判斷線性表是否為空
bool ListEmpty(SqList L){
if(L.length==0){
printf("是空表!");
return true;
}
else{
printf("不是空表!");
return false;
}
}
//返回線性表的資料個數
int ListLength(SqList L){
return L.length;

 


//取值 
int GetElem(SqList L,int i,int &e){
if(i<1||i>L.length){
printf("取值失敗!");
printf("\n"); 
}
e=L.elem[i-1];//陣列 
printf("第%d個元素為:%d",i,e);
printf("\n"); 
return 0;



//查詢
void LocateElem(SqList L,int e){
int i,note1=0,note2=0;
for(i=1;i<=L.length;i++){
if(e==L.elem[i-1]){
printf("查詢成功!為線性表中的第%d個元素\n",i);
note1=1;
}
else
  note2=1;
}
if(note1==0&&note2==1){
printf("查詢失敗!\n");
}






// 刪除
void ListDelete(SqList &L,int i){
if(i<1||i>L.length){
printf("不在刪除範圍之內"); 
printf("\n");
}
int j;
for(j=i;j<L.length;j++){
L.elem[j-1]=L.elem[j];
}
--L.length;
printf("刪除成功!\n");
TraverseList(L);



//清空(使L.length=0)
ClearList(SqList &L){
if(L.length){
L.length=0;
printf("清空成功!%d",L.length); 
}
}
 
//銷燬
void DestroyList(SqList &L){

    if(L.elem){
    delete L.elem;
    printf("銷燬成功!"); 
}
}
//退出
void Quit(int &flag){
flag=0;
printf("按任意鍵退出!\n");











int main(){
int flag=1,choice,number,e,i;
SqList sq;
//
while(flag){
printf("對線性順序表有以下操作:\n");
printf("1.建立順序表\n");
printf("2.插入元素\n");
   printf("3.查詢某個元素\n");
printf("4.刪除元素\n");
   printf("5.退出順序表\n");
   printf("請輸入選擇1-5:");
scanf("%d",&choice); 
   switch(choice){
   case 1:InitList(sq);
          break;
   case 2:printf("請輸入插入元素的位置以及元素:");
          scanf("%d,%d",&i,&e);
      ListInsert(sq,i,e);
   
      break;
case 3:printf("請輸入查詢的元素:\n");
      scanf("%d",&e);
  LocateElem(sq,e);
  break;
case 4:printf("請輸入要刪除第幾個元素:");
      scanf("%d",&e);
      ListDelete(sq,e);
      break;
case 5:Quit(flag);
      getch();
      break;
default:break;
   
}
   

DestroyList(sq);
return 0;