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

数据结构:线性表插入元素
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   -2
using 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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值