顺序表的增删改查

//静态顺表的增删改查的基本操作
#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;
}

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值