顺序表的题目
Posted lyt888
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了顺序表的题目相关的知识,希望对你有一定的参考价值。
#include<iostream> using namespace std; #define ElemType int const int MaxSize=100; typedef struct{ ElemType data[MaxSize]; int length; }SqList; //就地逆置 void reverse(SqList &L){ ElemType temp; for(int i=0;i<L.length/2;i++){ temp=L.data[i]; L.data[i]=L.data[L.length-1-i]; L.data[L.length-1-i]=temp; } } //删除值为x的元素 void del_x(SqList &L,ElemType x){ int k=0; for(int i=0;i<L.length;i++){ if(L.data[i]!=x) L.data[k++]=L.data[i]; } L.length=k; } //删除值在s、t之间的元素 void del_s2t(SqList &L,ElemType s,ElemType t){ 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-=k; } //删除有序表中重复的元素 void del_same(SqList &L){ int k=0; for(int i=1;i<L.length;i++){ if(L.data[i]!=L.data[k]) L.data[++k]=L.data[i]; } L.length=k+1; } //合并两个有序表 void merge(SqList A,SqList B,SqList &C){ int i=0,j=0,k=0; while(i<A.length&&j<B.length){ if(A.data[i]<=B.data[j]) C.data[k++]=A.data[i++]; else C.data[k++]=B.data[j++]; } while(i<A.length)C.data[k++]=A.data[i++]; while(j<B.length)C.data[k++]=B.data[j++]; C.length=k; } int main(){ SqList L; ElemType x; for(int i=0;i<10;i++){ cin>>x; L.data[i]=x; } L.length=10; // reverse(L); // for(int i=0;i<L.length;i++) // cout<<L.data[i]<<" "; // cout<<endl; // del_x(L,77); // del_s2t(L,21,29); // for(int i=0;i<L.length;i++) // cout<<L.data[i]<<" "; // cout<<endl; // del_same(L); // for(int i=0;i<L.length;i++) // cout<<L.data[i]<<" "; // cout<<endl; SqList H,G; for(int i=0;i<6;i++){ cin>>x; H.data[i]=x; } H.length=6; merge(L,H,G); for(int i=0;i<G.length;i++) cout<<G.data[i]<<" "; cout<<endl; return 0; } //77 51 34 21 8 14 77 19 28 54 //1 2 2 5 5 8 8 8 15 16 //1 3 5 5 7 8
以上是关于顺序表的题目的主要内容,如果未能解决你的问题,请参考以下文章