資料結構之順序表
阿新 • • 發佈:2021-06-24
構造一個空的順序表
#define MAX_SIZE 100 typedef struct { int *address;//基地址 int length;//順序表長度 int size;//順序表總空間 }LIST; //建立一個空的順序表 bool initList(LIST& list) { list.address = new int[MAX_SIZE]; if (!list.address) return false; list.length = 0; list.size = MAX_SIZE; return true; }
尾部新增資料
bool addPUSH(LIST& list,int data) { if (list.length >= MAX_SIZE) return false; list.address[list.length] = data; list.length++; return true; }
範圍內插入資料
bool ListInsert(LIST& list, int i, int data) { if (i < 0 || i >= 100) return false; if (list.length == MAX_SIZE) return false; for (int j = list.length-1; j >= i; j--) { list.address[j + 1] = list.address[j];//從最後一個元素開始後移,直到第 i 個元 素後移 } list.address[i] = data;//將新元素 e 放入第 i 個位置 list.length++;//表加一 return true; }
刪除資料
bool Listdelete(LIST& list, int addr) { if (addr<0 || addr>list.length) return false; if (addr == list.length - 1) { list.length--; return true; } for (int i = addr; i < list.length; i++) { list.address[i] = list.address[i +1]; } list.length--; return true; }
順序表銷燬
bool destroyList(LIST& list) { if (list.address) delete []list.address; list.length = 0; list.size = 0; return true; }
main函式
LIST list; cout << "初始化順序表" << endl; if (initList(list)) { cout << "順序表初始化成功" << endl; } int count = 0; cout << "追加個數\t" ; cin >> count; int data = 0; for (int i = 0; i < count; i++) { cout << "引數:\t"; cin >> data; cout<<endl; addPUSH(list, data); } listPrint(list); cout << "插入位置:\t" ; cin >> count; cout << "引數:\t"; cin >> data; cout << endl; ListInsert(list, count, data); listPrint(list); cout << "所需刪除的資料的地址:" ; cin >> data; if (Listdelete(list, data)) cout << "\t刪除成功" << endl; else cout << "\t刪除失敗" << endl; listPrint(list);
cout << "順序表銷燬..." << endl; destroyList(list); listPrint(list);
system("pause");
編譯環境VS2019
注:如有錯誤請與我聯絡,萬分感謝!!!