#include <iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef int ElemType;
typedef struct {
ElemType *elem;
int length;
}SqList;
Status InitList(SqList &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem)
exit(OVERFLOW);
L.length=0;
return OK;
}
int GetElem(SqList L,int i,ElemType &e)
{
if (i<1||i>L.length)
return ERROR;
e=L.elem[i-1];
return OK;
}
int LocateElem(SqList L,ElemType e)
{
for(int i=0; i<L.length; i++)
if(L.elem [i]==e)
return i+1;
return 0;
}
Status ListInsert(SqList &L,int i,ElemType e)
{
if((i<1)||(i>L.length+1))
return ERROR;
if(L.length==MAXSIZE)
return ERROR;
for(int j=L.length-1; j>=i-1; j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
++L.length;
return OK;
}
Status ListDelete(SqList &L,int i)
{
if((i<1)||(i>L.length))
return ERROR;
for(int j=i; j<=L.length-1; j++)
L.elem[j-1]=L.elem [j];
--L.length;
return OK;
}
void MergeList_Sq(SqList LA,SqList LB,SqList &LC)
{
LC.length=LA.length+LB.length;
LC.elem=new ElemType[LC.length];
ElemType *pa,*pb,*pc,*pa_last,*pb_last;
pc=LC.elem;
pa=LA.elem;
pb=LB.elem;
pa_last=LA.elem+LA.length-1;
pb_last=LB.elem+LB.length-1;
while(pa<=pa_last&&pb<=pb_last)
{
if(*pa<=*pb)
*pc++=*pa++;
else
*pc++=*pb++;
}
while(pa<=pa_last)
*pc++=*pa++;
while(pb<=pb_last)
*pc++=*pb++;
}
int main()
{
int i,e;
SqList LA,LB,LC;
InitList(LA);
InitList(LB);
InitList(LC);
cout<<"输入有序表A:";
for(i=0; i<5; i++)
{
cin>>LA.elem [i];
LA.length++;
}
cout<<"输入有序表B:";
for(i=0; i<5; i++)
{
cin>>LB.elem [i];
LB.length++;
}
MergeList_Sq(LA,LB,LC);
for(i=0; i<LC.length; i++)
cout<<LC.elem [i]<<' ';
cout<<endl;
return 0;
}
顺序表的基本操作和应用
于 2022-03-31 14:36:29 首次发布