顺序表应用4-2:元素位置互换之逆置算法(数据改进)
2016-09-22 09:33
447 查看
#include <iostream> #include <cstdio> #include <cstdlib> using namespace std; #define LISTINCREASMENT 100 #define LISTSIZE 1000001 #define OVERLFLOW -1 #define OK 1 typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize; } Sqlist; int SqInitial(Sqlist &L) { L.elem = (ElemType *)malloc(LISTSIZE*sizeof(ElemType)); if(!L.elem) return OVERLFLOW; L.length=0; L.listsize=LISTSIZE; return OK; } int ListInsert(Sqlist &L,int i, ElemType e) { if(L.length >= L.listsize) { ElemType *newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)*sizeof(ElemType)); L.elem = newbase; L.listsize+=LISTINCREASMENT; } ElemType *q= &(L.elem[i]); *q = e; ++L.length; return OK; } void exchange(Sqlist &L, int m) { ElemType *p = L.elem; ElemType *q = L.elem+L.length-1; for(;p < q; p++, q--) { swap(*p, *q); } p = L.elem; q = L.elem+L.length-m-1; for(;p < q; p++, q --) { swap(*p, *q); } p = L.elem+L.length-m; q = L.elem+L.length-1; for(;p < q; p++, q--) { swap(*p, *q); } } void print(Sqlist &L) { for(int i = 0; i < L.length; i++) { i == L.length-1 ? cout << L.elem[i] << endl : cout << L.elem[i] << ' '; } } int main() { int k; int n,m; Sqlist L; SqInitial(L); scanf("%d", &n); for(int i = 0; i < n; i++) { int e; scanf("%d", &e); ListInsert(L, i , e); } scanf("%d", &k); while(k --) { scanf("%d", &m); exchange(L,m); print(L); } return 0; }
相关文章推荐
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- sdut oj3663 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
- 顺序表应用4-2:元素位置互换之逆置算法(数据改进)