1464 数据结构:线性表插入元素

来源:互联网 发布:访客网络是用2.4还是5g 编辑:程序博客网 时间:2024/05/19 08:46

数据结构:线性表插入元素
Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByte
Total Submit:104 Accepted:57
Description

线性表a(有n个元素)和线性表b(有m个元素)的元素均为整数。现将b中存在而a中不存在的元素插入到线性表a中。其中:0<m,n<100

Input

只有一个测试案例。
输入包括2行,第1行为n和n个整数,第2行为m和m个整数。

Output

输出插入元素后a中的元素。

Sample Input
3 1 3 2
4 2 5 3 6
Sample Output
1 3 2 5 6
Hint

注意:输出的整数之间有1个空格,最后一个整数后面没有空格。


AC代码:

#include<iostream>#include<stdlib.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 10 #define TRUE  1#define FALSE  0#define OK  1#define ERROR  0#define INFEASSIBLE  -1#define OVERFLOW   -2using namespace std;typedef int Status;typedef int ElemType;typedef int *Triplet;ElemType *T,*p,*q,ai,bj;typedef struct{    ElemType *elem;      int length;         int listsize;   }SqList;typedef int Status;Status InitList_Sq(SqList &L)  {    L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));         if (!L.elem) exit(OVERFLOW);      L.length=0;        L.listsize=LIST_INIT_SIZE;      return OK;}Status GetElem (SqList L , int i,ElemType &e) {if(i<1||i>L.length+1) return ERROR;  e=L.elem[i-1];  return OK;} Status ListInsert_Sq(SqList &L,int i,ElemType e ){    if (i<1||i>L.length+1) return ERROR;    if (L.length>=L.listsize)    {        T=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));        if (!T) exit(OVERFLOW);        L.elem=T;        L.listsize+=LISTINCREMENT;    }    q=&(L.elem[i-1]);        for (p=&(L.elem[L.length]);p>=q;p--)*(p+1)=*p;  *q=e;      ++L.length;          return OK;} Status MergeList(SqList La, SqList Lb,SqList &Lc){int i=1,j=1,k=0,La_len,Lb_len,t=1;InitList_Sq(Lc);   La_len=La.length;    Lb_len=Lb.length;    while(i<=La_len){          GetElem(La,i++,ai);ListInsert_Sq(Lc,++k,ai);      }  while(j<=Lb_len){          GetElem(Lb,j++,bj);        for(int t=1;t<=La_len;t++)    {          if(La.elem[2]!=bj&&La.elem[1]!=bj)        {ListInsert_Sq(Lc,++k,bj); break;}    }             }}int main(){    SqList La,Lb,Lc;    ElemType elem,elem1;    int i,j=0,k=0;    int n,m;    cin>>n;    InitList_Sq(La);    InitList_Sq(Lb);    InitList_Sq(Lc);    La.length=n;      for (i=1;i<=n;i++)     cin>>La.elem[i-1];          cin>>m;     Lb.length=m;      for (i=1;i<=m;i++)        cin>>Lb.elem[i-1];            Lc.length=m+n;    MergeList(La,Lb,Lc);           for (i=1;i<Lc.length;i++)    cout<<Lc.elem[i-1]<<" ";     cout<<Lc.elem[i-1]<<endl;    return 0;}


1 0