順序表的增刪改查

//靜態順表的增刪改查的基本操作
#include <iostream>
#include <stdlib.h> 
#define MaxSize  100
using namespace std;
typedef  int DataType;
typedef struct {
     DataType List[MaxSize] ;
     int size;
}SeqList;
//初始化列表中的元素
void ListInitiate(SeqList *L){
     L->size = 0;
     L->List[MaxSize]=0;
}
//當前元素個數
int ListLength(SeqList *L){
     return L->size;
} 
void systems(){
      system("CLS");
}


void ListInitiation(SeqList *L,DataType x){
 L->List[L->size] = x;
      L->size++;
      cout<<"初始化一個元素"<<L->List[L->size-1]<<"完成!"<<endl;
}


//插入元素
int ListInsert(SeqList *L ,int i , DataType x){
    int j;
    if(L->size >= MaxSize ){
        cout<<"順序表已滿無法插入!"<<endl;
        return 0;
    }
    else if(i < 0 || i > L->size ){
         cout<< "參數i不合法!"<<endl;
         return 0;
    } else{
        for(j = L->size;j >= i;j --){
            L->List[j] = L->List[j -1];
        }
            L->List[j]  = x;
            L->size ++;
        return 1;
    }
}


//刪除數據元素
int ListDelete(SeqList *L,int i ,DataType *x){ 
        int  j;
        if(L->size <= 0){
               cout<<"順序表已空,無數據可刪!"<<endl;
               return 0;
        }else{
              *x = L->List[i];
              for(j = i+1;j <= L->size-1;j++){
              L->List[j -1]  = L->List[j];
              }
              L->size --;              
              return 1;
   }


}
//隨意查詢
int listgets(SeqList *L,DataType *x){
         for(int i = 0;i<L->size;i++){
               if(L->List[i]== *x){
                   cout<<"輸出此數據存在,"<<*x<<"在第"<<(i+1)<<"個位置"<<endl;               
               }else if(i >= L->size-1){
                     cout<<"你輸入的數據無法查到!"<<endl;
               }
         }
            
          
} 


//隨意刪除
int listDeletes(SeqList *L,DataType*x){
      for(int i = 0;i<L->size;i++){
             if(L->List[i] == *x){
              for(int j = i; j <L->size;j++){
                    L->List[j] = L->List[j+1];  
              }
              cout << "刪除成功!"<<endl;
              break;
             }else if(i >= L->size-1){
                   
                   cout<<"無法找到你要的元素!"<<endl; 
             } 
 }
 L->size--;
       
} 


//查詢元素
int  ListGet(SeqList *L,int i ,DataType *x){
        if(i < 0|| i> L->size -1 ){
            cout<< " 參數 i 不合法!"<<endl;
            return 0;
        }else{
            *x = L->List[i];
            return 1;
            cout<<"查詢到了!在第"<<i<<"個位置!"<<endl; 
        }


}


void showData(SeqList *L){
      for(int i = 0 ; i< L->size;i++){
      
               cout<<"第"<<(i+1)<<"個元素:"<<"List["<<i<<"] ="<<L->List[i]<<endl; 
      }
}


void operation(int input){
      int i,z;
      SeqList *p;
   //   cout<<p;
      switch(input){
            case 0:  cout<<"請輸入你要初始化的元素:";cin>>z;ListInitiation(p,z);break;
            case 1:  cout<<"請選擇要插入的位置:";cin >> i;cout<<"請選擇要插入的內容:";cin>>z;ListInsert(p,i,z);break;
            case 2:  cout<<"請選擇要查詢的位置:";cin >> i;cout<<"請選擇要查詢的內容:";cin>>z;ListGet(p,i,&z);break;
            case 3:  cout<<"請選擇要刪除的位置:";cin >> i;cout<<"請選擇要刪除的內容:";cin>>z;ListDelete(p,i+1,&z);break;
            case 4:  if(p->size > 0){cout<<"顯示已插入的元素:"<<endl; showData(p);}else{cout<<"次此列表爲空!"<<endl;}break; 
            case 5:  cout<<"進行全表查詢:"<<endl;cout<<"請輸入要查找的元素:";cin>>z;listgets(p,&z); break;
            case 6:  cout<<"進行全表刪除:"<<endl;cout<<"請輸入要刪除的元素:";cin>>z;listDeletes(p,&z); break;
            case 7:  systems(); 
 }
}


void menu(){
    int input;
    cout<<"_________________________________________________________"<<endl;
    cout<<"|*******************************************************|"<<endl;
    cout<<"|*****************歡迎進入菜單選項**********************|"<<endl;
    cout<<"|*****************進入初始化階段請稍後....**************|"<<endl;
    cout<<"|*****************0、選擇初始化插入元素   **************|"<<endl;
    cout<<"|*****************1、選擇插入元素         **************|"<<endl;
    cout<<"|*****************2、查詢需要的元素       **************|"<<endl;
    cout<<"|*****************3、刪除需要刪除的元素   **************|"<<endl;
    cout<<"|*****************4、顯示已插入的元素     **************|"<<endl;
    cout<<"|*****************5、進行全表查詢元素     **************|"<<endl;
    cout<<"|*****************6、進行全表刪除元素     **************|"<<endl;
    cout<<"|*****************7、清頻函數調用         **************|"<<endl;
    cout<<"|*******************************************************|"<<endl;
    cout<<"_________________________________________________________"<<endl;
    cout<<"請選擇:";cin>>input;
    operation(input);  
    menu();   
}


int main(){
     SeqList *p;
     ListInitiate(p);
     ListLength(p);
     menu();
     return 0;
}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章