//靜態順表的增刪改查的基本操作
#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;
}