swust-oj 941 有序顺序表的合并操作的实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Wutongyewan/article/details/79965796

有序顺序表的合并操作的实现
1000(ms)
10000(kb)
2614 / 13893
已知两非递减的顺序线性表,要求合并成一个新的非递减顺序线性表。(测试数据为整型)

输入

输入包含四行,第一行为自然数n,表示第一个非递减顺序线性表的长度;
第二行为n个自然数构成的非递减顺序线性表;
第三行为自然数m,表示第二个非递减顺序线性表的长度;
第四行为m个自然数构成的非递减顺序线性表。

输出

输出:用一行输出合并后的非递减顺序线性表,各数之间用一个空格隔开。

样例输入

2
1 3
3
2 3 6

样例输出

1 2 3 3 6 

吐舌头AC:

 

#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef struct Sqlist
{
 int data[MaxSize];
 int length;
}Sqlist;
//初始化顺序表
void initList(Sqlist *&L){
 L=(Sqlist *)malloc(sizeof(Sqlist));
 L->length=0;
}
//创建顺序表
void creatList(Sqlist *&L){
 int n,i,e;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%d",&e);
  L->data[i]=e;
  L->length++;
 }
}
//非递减插入排序
void mergeList(Sqlist *&L1,Sqlist *&L2,Sqlist *&L3)
{
 initList(L3);
 int i=0,j=0;
 while(i<L1->length&&j<L2->length)
 {
  if(L1->data[i]<L2->data[j])
   L3->data[L3->length++]=L1->data[i++];
  else
   L3->data[L3->length++]=L2->data[j++];
 }
 while(i<L1->length)
  L3->data[L3->length++]=L1->data[i++];
 while(j<L2->length)
  L3->data[L3->length++]=L2->data[j++];
}
//输出顺序表
void display(Sqlist *&L)
{
 int i=0;
 while(i<L->length)
  printf("%d ",L->data[i++]);
}
int main()
{
 Sqlist *L1,*L2,*L3;
 initList(L1);
 creatList(L1);
 initList(L2);
 creatList(L2);
 mergeList(L1,L2,L3);
 display(L3);
 return 0;
}


合并两个有序顺序表(错误在哪儿)

07-02

//头文件rn#includernusing namespace std;rnconst int defaultSize=100;rntemplaternclass SeqListrnrnprotected:rn T *data;rn int maxSize;rn int last;rn void reSize(int newSize);rnpublic:rn SeqList(int sz=defaultSize);rn SeqList(SeqList&L);rn ~SeqList()delete[]data;rn int Size()constreturn maxSize;rn int Length()constreturn last+1;rn int Search(T& x)const;rn int Locate(int i)const;rn T* getData(int i)constrn rn return (i>0&&i<=last+1)?&data[i-1]:NULL;rn rn void setData(int i,T& x)rn rn if(i>0&&i<=last+1) rn data[i-1]=x;rn rn bool Insert(int i,T&x);rn bool Remove(int i,T&x);rn bool IsEmpty()return(last==-1);rn bool IsFull()return(last==maxSize-1);rn void input();rn void output();rn SeqListoperator=(SeqList&L);rn;rntemplaternSeqList::SeqList(int sz)rnrn if(sz>0)rn rn maxSize=sz;rn last=-1;rn data=new T[maxSize];rn if(data==NULL)rn rn cerr<<"存储分配错误."<rnSeqList::SeqList(SeqList&L)rnrn maxSize=L.Size();rn last=L.Length()-1;rn data=new T[maxSize];rn if(data==NULL)rn rn cerr<<"存储分配错误."<rnvoid SeqList::reSize(int newSize)rnrn if(newSize<=0)rn rn cerr<<"无效的数组大小"<rnint SeqList::Search(T& x)constrnrn for(int i=0;i<=last;i++)rn if(data[i]==x) return i+1;rn return 0;rnrntemplaternint SeqList::Locate(int i)constrnrn if(i>=1&&i<=last+1) return i;rn else return 0;rnrntemplaternbool SeqList::Insert(int i,T&x)rnrn if(last==maxSize-1)rn return false;rn if(i<0||i>last+1)rn return false;rn for(int j=last;j>=i;j--)rn data[j+1]=data[j];rn data[i]=x;rn last++;rn return true;rnrntemplaternbool SeqList::Remove(int i,T&x)rnrn if(last==-1)rn return false;rn if(i<1||i>last+1)rn return false;rn x=data[i-1];rn for(int j=i;j!=last+1;++j)rn data[j-1]=data[j];rn last--;rn return true;rnrntemplaternvoid SeqList::input()rnrn cout<<"开始输入表中元素,请先输入元素个数:"<>num;rn last=num-1;rn if(last>data[i];rn rn rn rnrntemplaternvoid SeqList::output()rnrn cout<<"顺序表元素当前最后位置为:"<rnSeqList SeqList::operator =(SeqList& L)rnrn SeqList* a=new SeqList(L);rn return *a;rnrn rn//源文件rn#include "seqList.h"rnusing namespace std;rntemplaternSeqList compine(const SeqList& a,const SeqList& b)rnrn SeqList c;rn int i=1,k=1,j=1;rn while(a.getData(k)!=NULL&&b.getData(j)!=NULL)rn rn if(*a.getData(k)<*b.getData(j))rn rn c.setData(i,*a.getData(k));rn ++k;rn rn elsern rn c.setData(i,*b.getData(j));rn ++j;rn rn ++i;rn rn if(k<=a.Length())rn rn for(int j=k;j<=a.Length();++j)rn rn c.setData(i,*a.getData(i));rn ++i;rn rn rn elsern rn for(int k=j;k<=b.Length();++k)rn rn c.setData(i,*b.getData(k));rn ++i;rn rn rn return c;rnrnint main()rnrn SeqList a,b,c;rn a.input();rn a.output();rn b.input();rn b.output();rn c=compine(a,b);rn c.output();rn system("pause");rn return 0;rnrn为什么结果总是空呢?

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试