概述
目录
题目
思路
代码
数据结构
STL
题目
题目描述
建立长度为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
思路
和之前的方法一样,先遍历让位置p 指向链表LA的最后一个节点,然后再之间把链表LB接在后面即可
// 单链表合并
void LinklistMerge(Linklist* &LA,Linklist* &LB) {
Linklist *p=LA;
//循环找到LA的最后一个节点的位置p
while(p->next!=NULL) {
p=p->next;
}
p->next=LB->next;//直接将LB接在LA后面即可
}
代码
链表模板
数据结构
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
//定义链表
typedef struct LNode {
char data;
LNode* next;
}Linklist;
// 初始化链表
void LinklistInit(Linklist* &L) {
L=(Linklist*)malloc(sizeof(Linklist));
L->next=NULL;
}
//输入数据,创建链表
void LinklistCreate(Linklist* &L) {
int n;cin>>n;
Linklist *p=L;
while(n--) {
Linklist* q;
LinklistInit(q);
cin>>q->data;
p->next=q;
p=q;
}
}
// 单链表合并
void LinklistMerge(Linklist* &LA,Linklist* &LB) {
Linklist *p=LA;
while(p->next!=NULL) {
p=p->next;
}
p->next=LB->next;
}
//输出数据,打印链表
void LinklistPrint(Linklist* &L) {
L=L->next;
while(L!=NULL) {
cout<<L->data<<" ";
L=L->next;
}
}
int main() {
Linklist *LA,*LB;
LinklistInit(LA);
LinklistCreate(LA);
LinklistInit(LB);
LinklistCreate(LB);
LinklistMerge(LA,LB);
LinklistPrint(LA);
return 0;
}
STL
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
list<char>a,b;
int main(){
int n;cin>>n;
char x;
while(cin>>x,a.push_back(x),--n);
cin>>n;
while(cin>>x,b.push_back(x),--n);
b.splice(b.begin(),a);
list<char>::iterator it;
for(it=b.begin();it!=b.end();it++) {
cout<<*it<<" ";
}
return 0;
}
最后
以上就是孤独玉米为你收集整理的SWUST OJ#954 单链表的链接题目思路代码的全部内容,希望文章能够帮你解决SWUST OJ#954 单链表的链接题目思路代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复