数据结构->顺序表的操作


1、输入一组整型元素序列,建立顺序表。
2、实现该顺序表的遍历。
【数据结构->顺序表的操作】3、在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。
4、判断该顺序表中元素是否对称,对称返回1,否则返回0。
5、实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。
6、输入整型元素序列利用有序表插入算法建立一个有序表。
7、利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。
8、编写一个主函数,调试上述算法。


#include #include typedef int ElemType; #define maxn 100000 //const int maxn=10000; typedef struct node { ElemType data[maxn]; int length; }Seqlist; Seqlist* cj(Seqlist *L) { int t; scanf("%d",&t); int i=0; while(t!=-1) { L->data[i++]=t; L->length++; scanf("%d",&t); if(L->length>maxn) { printf("该表已满\n"); return 0; } } return L; } void bl(Seqlist *l) { int i=0; for(; ilength; i++) printf("%d ",l->data[i]); puts(""); } int cz(Seqlist *l,int t) { int i=0; for(; ilength; i++) { if(l->data[i]==t) return 1; } return 0; } int dc(Seqlist *l) { int i=0; int j=(l->length)-1; while(l->data[i]==l->data[j]) { i++; j--; if(j<=i) return 1; } return 0; } void jh(Seqlist *l) { int i=0; int j=(l->length)-1; while(idata[i]%2==0&&l->data[j]%2==1) { int t; t=l->data[i]; l->data[i]=l->data[j]; l->data[j]=t; i++; j--; } else if(l->data[i]%2==0&&l->data[j]%2==0) { j--; } else if(l->data[i]%2==1&&l->data[j]%2==1) { i++; } else { i++; j--; } } } Seqlist* cr(Seqlist *l) { int t; scanf("%d",&t); int i=0; while(t!=-1) { l->length++; if(i==0) l->data[i++]=t; else {int j=0; while(l->data[j]<=t) { j++; } int k; for(k=l->length-1; k>=j; k--) l->data[k+1]=l->data[k]; l->data[j]=t; // bl(l); } scanf("%d",&t); if(l->length>maxn) { printf("该表已满\n"); return 0; } } return l; } Seqlist* hb(Seqlist *a,Seqlist *b,Seqlist *h) { int i=0,j=0,k=0; while(ilength&&jlength) { if(a->data[i]data[j]) { h->data[k++]=a->data[i]; h->length++; i++; } else { h->data[k++]=b->data[j]; h->length++; j++; } }if(i!=a->length-1) while(ilength) { h->data[k++]=a->data[i++]; h->length++; } if(j!=b->length-1) while(jlength) { h->data[k++]=b->data[j++]; h->length++; }return h; /* //合并 短向长合并 if(a->length>b->length) { while(jlength) { int s=0; while(a->data[s]data[j]) { s++; } int k; for(k=a->length-1; k>=s; k--) a->data[k+1]=a->data[k]; a->data[s]=b->data[j]; a->length++; j++; } return a; } else { while(jlength) { int s=0; while(b->data[s]data[j]) { s++; } int k; for(k=b->length-1; k>=s; k--) b->data[k+1]=b->data[k]; b->data[s]=a->data[j]; b->length++; // bl(b); j++; } return b; }*/ } int main() { Seqlist *h,*tt1,*tt2; h=(Seqlist *)malloc(sizeof(Seqlist)); h->length=0; h=cj(h); bl(h); printf("查询1的结果为 %d\n",cz(h,1)); printf("查询10的结果为 %d\n",cz(h,10)); printf("查询对称的结果为 %d\n",dc(h)); jh(h); printf("奇数在前 偶数在后 的结果为 "); bl(h); puts(""); Seqlist *tt3=(Seqlist *)malloc(sizeof(Seqlist)); tt1=(Seqlist *)malloc(sizeof(Seqlist)); tt1=cr(tt1); printf("非递减有序顺序表1: "); bl(tt1); tt2=(Seqlist *)malloc(sizeof(Seqlist)); tt2=cr(tt2); printf("非递减有序顺序表2: "); bl(tt2); printf("合并后顺序表"); bl(hb(tt1,tt2,tt3)); return 0; }




    推荐阅读