我是靠谱客的博主 孤独玉米,最近开发中收集的这篇文章主要介绍SWUST OJ#954 单链表的链接题目思路代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

题目

思路

代码

数据结构

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 单链表的链接题目思路代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部