顺序表应用事例
刪除其中所有值等于x的元素
法一:
1 void delnodel(SqList*& L, ElemType x) 2 { 3 int i = 0, j = 0; 4 for (i = 0; i < L->length; i++) 5 { 6 if (L->data[i] != x) 7 { 8 L->data[j] = L->data[i]; 9 j++; 10 } 11 } 12 L->length = j; 13 }法二:
1 void delnodel2(SqList*& L, ElemType x) 2 { 3 int i = 0, j = 0; 4 for (i = 0; i < L->length; i++) 5 { 6 if (L->data[i] == x) 7 j++; 8 else 9 L->data[i - j] = L->data[i]; 10 } 11 L->length -= j; 12 }?以第一個元素為基準,將所有小于等于它的元素移到該基準前面,將所有大于它的移到該基準的后面。
法一:
1 void partition(SqList*& L) 2 { 3 ElemType pivot = L->data[0]; 4 int i = 0, j = L->length - 1; 5 6 while (i < j) 7 { 8 while (i<j && L->data[j]>pivot) 9 j--; 10 while (i < j && L->data[i] <= pivot) 11 i++; 12 if (i < j) 13 swap(L->data[i], L->data[j]); 14 } 15 swap(L->data[i], L->data[0]); 16 }法二:
1 void partition2(SqList*& L) 2 { 3 int i = 0, j = L->length - 1; 4 ElemType pivot = L->data[0]; 5 6 while (i < j) 7 { 8 while (i<j && L->data[j]>pivot) 9 j--; 10 if (i < j) 11 L->data[i] = L->data[j]; 12 while (i < j && L->data[i] <= pivot) 13 i++; 14 if (i < j) 15 L->data[j] = L->data[i]; 16 } 17 L->data[i] = pivot; 18 }奇數移到偶數前
法一:
1 void movel(SqList*& L) 2 { 3 int i = 0,j = L->length-1; 4 5 while (i < j) 6 { 7 while (i < j && L->data[j] % 2 == 0) 8 j--; 9 while (i < j && L->data[i] % 2 != 0) 10 i++; 11 if (i < j) 12 swap(L->data[i], L->data[j]); 13 } 14 15 }法二:
1 void movel2(SqList*& L) 2 { 3 int i = -1, j = 0; 4 for (j = 0; j < L->length - 1; j++) 5 { 6 if (L->data[j] % 2 != 0) 7 { 8 i++; 9 if (i != j) 10 swap(L->data[i], L->data[j]); 11 12 } 13 } 14 }?
轉載于:https://www.cnblogs.com/KIROsola/p/11136081.html
總結
- 上一篇: 08、MySQL—字符串型
- 下一篇: 2-02字符编码的演化