順序表結構

struct Sq_list { int elem[Max_size+1]; int length; };
創建並初始化順序表
int Init_list(Sq_list *L) { L->length = 0; return 0; }
按序插入元素
int insert (Sq_list *L) { int n; cout << "請輸入順序表的長度:" << endl; cin >> n; cout << "請輸入元素:" << endl; for (int i = 1; i <= n; i++) { int data; cin >> data; L->elem[i] = data; L->length++; } return 0; }
在指定位置插入元素

int Insert_elem(Sq_list *L) { int cor,elem; cout << "請輸入指定位置的元素:" << endl; cin >> cor; cin >> elem; if (cor<1 || cor>L->length+1) { cout << "輸入的位置不在順序鏈表內!" << endl; } else { for (int i = L->length; i >= cor; i--) { L->elem[i+1] = L->elem[i]; } L->elem[cor] = elem; L->length++; } return 0; }
刪除元素

刪除指定值元素
int Delete(Sq_list *L) { int data; cout << "請輸入要刪除的元素值:" << endl; cin >> data; int length = L->length;//存放表的原長 for (int i = 1; i <= L->length; i++) { if (L->elem[i] == data) { for (int j = i; j < L->length; j++) { L->elem[j] = L->elem[j + 1]; } i--; L->length--; } } if (L->length == length)//判斷表長是否發生改變 { cout << "您想要刪除的元素不在本鏈表中" << endl; } return 0; }
刪除指定位置的元素
int Delete2(Sq_list *L) { int length; cout << "請輸入要刪除元素的位置:" << endl; cin >> length; if (length<1 || length>L->length) { cout << "您輸入的位置不在本表中" << endl; } else { for (int i = length; i <= L->length; i++) { L->elem[i] = L->elem[i + 1]; } L->length--; } return 0; }
查找
按值查找
int seek_elem(Sq_list *L) { int elem2; bool check = false;//用於判斷表中是否有該元素 cout << "請輸入您要查找的值:" << endl; cin >> elem2; cout << "您所查元素的位置為" << ' '; for (int i = 1; i <= L->length; i++) { if (L->elem[i] == elem2) { cout << i << ' '; check = true; } } cout << '\n'; if (check == false) { cout << "表中沒有您需要查找的元素" << endl; } return 0; }
按位置查找
int seek_length(Sq_list *L) { int length2; cout << "請輸入您要查找的位置:" << endl; cin >> length2; if (length2 < 1 || length2 > L->length) { cout << "您輸入的位置不在本表中" << endl; } else { cout << "您所查找位置的元素為 " << L->elem[length2] << endl; } return 0; }
遍歷一遍順序表
int show(Sq_list *L) { cout << "遍歷一遍當前數據表" << endl; for (int i = 1; i < L->length; i++) { cout << L->elem[i] <<' '; } cout << L->elem[L->length] << ' ' << endl; return 0; }
完整代碼
//注:主函數沒寫,自行調用功能函數即可測試,"stdafx.h"為vs編譯器必須,其他可忽視 #include "stdafx.h" #include <iostream> #include <stdlib.h> #define Max_size 1000 using namespace std; //順序表結構 struct Sq_list { int elem[Max_size+1]; int length; }; //創建並初始化順序表 int Init_list(Sq_list *L) { L->length = 0; return 0; } //按序插入元素 int insert (Sq_list *L) { int n; cout << "請輸入順序表的長度:" << endl; cin >> n; cout << "請輸入元素:" << endl; for (int i = 1; i <= n; i++) { int data; cin >> data; L->elem[i] = data; L->length++; } return 0; } //在指定位置插入元素 int Insert_elem(Sq_list *L) { int cor,elem; cout << "請輸入指定位置的元素:" << endl; cin >> cor; cin >> elem; if (cor<1 || cor>L->length+1) { cout << "輸入的位置不在順序鏈表內!" << endl; } else { for (int i = L->length; i >= cor; i--) { L->elem[i+1] = L->elem[i]; } L->elem[cor] = elem; L->length++; } return 0; } //刪除指定值元素 int Delete(Sq_list *L) { int data; cout << "請輸入要刪除的元素值:" << endl; cin >> data; int length = L->length;//存放表的原長 for (int i = 1; i <= L->length; i++) { if (L->elem[i] == data) { for (int j = i; j < L->length; j++) { L->elem[j] = L->elem[j + 1]; } i--; L->length--; } } if (L->length == length)//判斷表長是否發生改變 { cout << "您想要刪除的元素不在本鏈表中" << endl; } return 0; } //刪除指定位置的元素 int Delete2(Sq_list *L) { int length; cout << "請輸入要刪除元素的位置:" << endl; cin >> length; if (length<1 || length>L->length) { cout << "您輸入的位置不在本表中" << endl; } else { for (int i = length; i <= L->length; i++) { L->elem[i] = L->elem[i + 1]; } L->length--; } return 0; } //按值查找 int seek_elem(Sq_list *L) { int elem2; bool check = false;//用於判斷表中是否有該元素 cout << "請輸入您要查找的值:" << endl; cin >> elem2; cout << "您所查元素的位置為" << ' '; for (int i = 1; i <= L->length; i++) { if (L->elem[i] == elem2) { cout << i << ' '; check = true; } } cout << '\n'; if (check == false) { cout << "表中沒有您需要查找的元素" << endl; } return 0; } //按位置查找 int seek_length(Sq_list *L) { int length2; cout << "請輸入您要查找的位置:" << endl; cin >> length2; if (length2 < 1 || length2 > L->length) { cout << "您輸入的位置不在本表中" << endl; } else { cout << "您所查找位置的元素為 " << L->elem[length2] << endl; } return 0; } //遍歷順序表 int show(Sq_list *L) { cout << "遍歷一遍當前數據表" << endl; for (int i = 1; i < L->length; i++) { cout << L->elem[i] <<' '; } cout << L->elem[L->length] << ' ' << endl; return 0; }
覺得文章不錯,可以點個贊和關注喲.
