//#include //#include //#include // //using namespace std; //#define MaxSize 50 //#define InitSize 100 静态分配 //typedef struct { // int data[MaxSize]; // int length; // //}SqList; // 动态分配 //typedef struct { // int* data; // int length,maxSize; //}SqList01; // 插入操作 //bool ListInsert(SqList& L, int i, int e) //{ // if (iL.length + 1) // return false; // // if (L.length >= MaxSize) // return false; // // for (int j = L.length; j >= i; j--) // L.data[j] = L.data[j-1]; // L.data[i-1] = e; // L.length++; // return true; //} // // 删除操作 //bool ListDelete(SqList& L, int i, int& e) //{ // if (i > L.length || i < i) // return false; // e = L.data[i - 1]; // L.length--; // return true; //} // 查找 //int LocateElem(SqList L, int e) //{ // int i; // for (i = 0; i < L.length; i++) // if (L.data[i] = e) // return i + 1; // return 0; //} 删除最小值 //bool S_Del_Min(SqList& L,int &e) //{ // int k; // if (L.length == 0) // return false; // int Min = L.data[0]; // for (int i = 1; i < L.length; i++) // { // if (Min > L.data[i]) // k = i; // } // L.data[k] = L.data[L.length-1]; // L.length--; // return true; //} // // 元素逆置 //void Swap(SqList& L) //{ // int swap; // for (int i = 0, j = L.length-1; j > i; j--, i++) // { // swap = L.data[j]; // L.data[j] = L.data[i]; // L.data[i] = swap; // } //} 初始化 //void InitList(SqList& L) { // L.length = 0; // cout // return 0; // } // for (int k = 0; k < L.length; k++) //输出顺序表 // { // cout // // cin >> L.data[i]; // L.length++; // } //} // 01_顺序表里面删除值x //void Del_x_01(SqList& L, int e) //{ // int j = 0; // for (int i = 0; i < L.length; i++) // { // if (L.data[i]!=e) // { // L.data[j] = L.data[i]; // j++; // } // } // L.length = j; //} // 02_顺序表删除值x //void Del_x_02(SqList& L, int e) //{ // int k = 0; // for (int i = 0; i < L.length; i++) // { // if (L.data[i] == e) // { // k++; // } // else // { // L.data[i - k] = L.data[i]; // } // } // L.length = L.length - k; //} // 01_有序表删除区间元素 //bool Del_s_t01(SqList& L, int s, int t) //{ // if (s >= t||L.length==0) // return false; // int k = 0; // for (int i = 0; i < L.length; i++) // { // if (L.data[i] > s && L.data[i] < t) // { // k++; // } // else // { // L.data[i - k] = L.data[i]; // } // } // L.length = L.length - k; // return true; //} 02_有序表删除区间元素 //bool Del_s_t02(SqList& L, int s, int t) //{ // int i, j; // if (s >= t || L.length == 0) // return false; // //找最小值 // // for (i = 0; i < L.length && L.data[i] = L.length) // return false; // for (j = i; j < L.length && L.data[j] < t; j++); // // while (j < L.length) // { // L.data[i] = L.data[j]; // j++; // i++; // // } // L.length = i; //} // 从顺序表中区间元素 //bool Del_s_t001(SqList& L, int s, int t) //{ // int k = 0; // if (s >= t || L.length == 0) // return false; // for (int i = 0; i < L.length; i++) // { // if (L.data[i] >= s && L.data[i] // L.data[i-k] = L.data[i]; // // } // } // L.length = L.length - k; // return true; //} // 从有序表删除重复值(插入排序思想) //bool Del_mor(SqList& L) //{ // // if (L.length == 0) // return false; // int i, j; // for (i = 0, j = 1; j < L.length; j++) // { // if (L.data[i] != L.data[j]) // { // L.data[++i] = L.data[j]; // } // // // } // L.length = i + 1; // return true; //} // // 双有序表合并 //bool Add_Two(SqList L, SqList I, SqList01& A) //{ // int i = 0, j = 0, k = 0; // if (L.length + I.length > A.maxSize) // return false; // // while (j < L.length || i < I.length) // { // if (L.data[j] > I.data[i]) // A.data[k++] = I.data[i++]; // else // A.data[k++] = L.data[j++]; // } // for (; i < I.length; i++) // A.data[k++] = I.data[i++]; // // for (; j < L.length; j++) // A.data[k++] = L.data[j++]; // A.length = k - 1; // return true; // //} 元素逆置 //bool Reverse(int A[], int left, int right, int arraySize) //{ // if (left >= right || right >= arraySize) // return false; // int mid = (left + right) / 2; // for (int i = 0; i < mid - left; i++) // { // int temp; // temp = A[left + i]; // A[left + i] = A[right - i]; // A[right - i] = temp; // } //} 数组内部顺序表交换位置 //void Exchange(int a[], int m, int n, int arrsize) //{ // Reverse(a, 0, m + n - 1, arrsize); // Reverse(a, 0, n - 1, arrsize); // Reverse(a, n, m + n - 1, arrsize); //} 顺序查找 //int Search_Seq(SqList L, int e) //{ // L.data[0] = e; // for (int i = L.length; L.data[i] != e; --i) // return i; //} // //void Found01(SqList& L, int e) //{ // int i; // for (i = 0; i < L.length && L.data[i] < e; i++); // if (L.data[i] == e&&i!=L.length-1) // { // int temp = L.data[i]; // L.data[i] = L.data[i + 1]; // L.data[i + 1] = temp; // } // else // { // for (int j = L.length; j > i; j--) // // L.data[j] = L.data[j - 1]; // L.data[i] = e; // L.length++; // // } //} // //void SearchExchangeInsert(SqList &L,int e) //{ // int low = 0, high = L.length-1; // int mid,j; // while (low // int temp = L.data[mid]; // L.data[mid] = L.data[mid+ 1]; // L.data[mid + 1] = temp; // } // if (low > high) // { // for (j = L.length-1; j > high; j--) // // L.data[j+1] = L.data[j]; // L.data[j+1] = e; // L.length++; // } //} // 数组元素集体左移动 //void Reverse(SqList& L, int form, int to) //{ // int temp, i; // for ( i = 0; i < (to - form + 1) / 2; i++) // { // temp = L.data[form + i]; // L.data[form + i] = L.data[to - i]; // L.data[to - i] = temp; // } //} //void Converse(SqList& L, int p) //{ // Reverse(L, 0, p - 1); // Reverse(L, p, L.length - 1); // Reverse(L, 0, L.length - 1); //} // 两个数组寻找中位数 //int FoundMid(SqList A, SqList B,int &mid) //{ // int s1 = 0, d1 = A.length - 1, m1, s2 = 0, d2 = B.length - 1, m2; // // while (s1 != d1 || s2 != d2) // { // m1 = (s1 + d1) / 2; // m2 = (s2 + d2) / 2; // if (A.data[m1] ==B.data[ m2]) // return A.data[m1]; // if (A.data[m1] < B.data[m2]) // { // if ((s1 + d1) % 2 == 0) // { // s1 = m1; // d2 = m2; // } // else // { // s1 = m1 + 1; // d2 = m2; // } // } // else // { // if ((s2 + d2) % 2 == 0) // { // d1 = m1; // s2 = m1; // } // else // { // d1 = m1; // s1 = m2+ 1; // // } // } // } // return A.data[s1] < B.data[s2] ? A.data[s1] : B.data[s2]; //} //int main() //{ // SqList L; // InitList(L); // CreatList(L,5); // Print(L); // //Swap(L); // //Del_x_01(L, 10); // //Del_x_02(L, 10); // //Del_s_t01(L, 10, 30); // //Del_s_t02(L, 10, 30); // //Del_s_t001(L, 10, 30); // //Del_mor(L); // //SearchExchangeInsert(L, 30); // //Found01(L, 30); // //Converse(L, 2); // // // // // // // Print(L); // // // return 0; //}
|