建立长度为n的单链表A和长度为m的单链表B。编程实现将B表链接在A表的尾端,形成一个单链表A。数据类型指定为字符型。
输入
第一行为A表的长度n; 第二行为A表中的数据元素; 第三行为B表的长度m; 第四行为B表中的数据元素。
输出
输出为链接好后的A表中的所有数据元素。
样例输入复制
4 A B C D 6 1 2 3 4 5 6
样例输出复制
A B C D 1 2 3 4 5 6
代码
#include<iostream>
#include<malloc.h>
#include<stdio.h>
#define MaxSize 1000
using namespace std;
struct LinkNode
{
char data;
LinkNode *next;
}*L1,*L2;
void Create2(LinkNode*&L,char a[],int n)//尾插法
{
LinkNode*r,*s;
L=(LinkNode*)malloc(sizeof(LinkNode));
r=L;
for(int i=0;i<n;i++)
{
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void Create1(LinkNode*&L,char a[],int n)//尾插法
{
LinkNode*r,*s;
L=(LinkNode*)malloc(sizeof(LinkNode));
r=L;
for(int i=0;i<n;i++)
{
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=L2->next;
//r是L1的尾结点,L2->next是L2的第一个节点
//把L1的尾结点指向L2的第一个结点,就连接上了
}
int main()
{
int n,m;
char a[MaxSize],b[MaxSize];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
cin>>a[i];
}
scanf("%d",&m);
for(int i=0;i<m;i++)
{
cin>>b[i];
}
Create2(L2,b,m);
Create1(L1,a,n);//把L2连接到L1后面
L1=L1->next;
while(L1!=NULL)
{
printf("%c ",L1->data);
L1=L1->next;
}
}