線性表的動態儲存及插入、刪除、查詢、擴大操作;
阿新 • • 發佈:2021-07-12
有關資料結構的學習筆記,懶得整理了,直接掛上了。。。
1 #include<cstdio> 2 #include<cstdlib> 3 #include<iostream> 4 #define InitSize 10 5 using namespace std; 6 typedef struct {//Linear_list data formation 7 int* data; 8 int MaxSize; 9 int length; 10 }Sqlist; 11 void InitList(Sqlist& L)//InitList 12{ 13 L.data =/* (int*)malloc(InitSize * sizeof(int));*/new int[InitSize]; 14 L.length = 0; 15 L.MaxSize = InitSize; 16 int i = 0; 17 } 18 void IncreaseSize(Sqlist& L,int Addlen)//Addlength 19 { 20 int* P = L.data; 21 int i = 0; 22 L.data = new int[InitSize + Addlen]; 23 while (i < L.length)24 { 25 L.data[i++] = P[i]; 26 } 27 L.MaxSize += Addlen; 28 delete[]P; 29 } 30 bool ListDelete(Sqlist& L, int i, int& e)//Delete Elem 31 { 32 if (i<1 || i>L.length) 33 return false; 34 e = L.data[i - 1]; 35 for (int j = i; j < L.length; j++) 36 L.data[j - 1] = L.data[j]; 37L.length--;//Don't forget!! 38 return true; 39 } 40 bool ListInsert(Sqlist& L, int i, int e)//Insert Elem 41 { 42 if (i<1 || i>L.length + 1) 43 return false; 44 if (L.length >= L.MaxSize) 45 return false; 46 for (int j = L.length; j >= i; j--) 47 L.data[j] = L.data[j - 1]; 48 L.data[i - 1] = e;//Don't forget!! 49 L.length++; 50 return true; 51 } 52 void Getelem(Sqlist& L, int location) 53 { 54 for (int i = 0; i < L.length; i++) 55 { 56 if (location == i + 1) 57 { 58 cout << L.data[i] <<' '<< location; 59 break; 60 } 61 if (i ==L.length) 62 cout << "num doesn't exist" << endl; 63 } 64 } 65 int main() 66 { 67 68 Sqlist L1; 69 int e = -1;//return delete elem; 70 InitList(L1); 71 for (int j = 0; j < 5; j++) 72 { 73 L1.data[j] = j; 74 L1.length++; 75 } 76 // 77 //ListDelete(L1, 2, e); 78 //IncreaseSize(L1, 5); 79 for (int j = 0; j < L1.length; j++) 80 { 81 cout << L1.data[j] << endl; 82 } 83 //cout << e << ' ' << L1.length; 84 //cout << "Elem who is Deserted is " << L1.data[1]<<endl; 85 Getelem(L1, 2); 86 return 0; 87 }