链表(先进后出)
简介:
链表是一个线性表,能够
在常数时间内实现元素的插入和删除, 我们引入 链表 这种数据结构
分类 | 描述 |
---|---|
单向链表 | 每一个节点包含了数据块和指向下一个节点的指针 |
双向链表 | 每一个节点包含了数据块和指向下一个节点的指针以及指向前一个节点的指针 |
常用操作:
操作 | 描述 |
---|---|
查找(.find(x)) | 找到符合条件的节点 |
插入(->) | -添加一个新节点 |
删除(delete) | 删除一个存在的节点 |
合并数字
已完成
1-n,共n个数字,初始时每个数都是独立的算作1个串,之后会进行n-1次合并,每次合并操作,会把一个串放到另一个串的后面。
合并时会给出2个数字,x y,表示将以y为开头的串放到x为开头的串的后面。例如:
1 3 (3放到1后面,=> (1 3), 2, 4 )
2 4 (4放到2后面,=> (1 3), (2 4))
1 2 (2放到1后面,=> (1 3 2 4))
在n - 1次合并后,按顺序输出最终剩下的这个串的全部数字。
输入格式
第1行:1个数n(2 <= n <= 10000) 后面n - 1行,每行2个数x y,对应n - 1次合并操作,把以y为开头的串放到以x为开头的串的末尾。
输出格式
输出共n行,每行1个数,对应最终串包含的n个数字。
输入样例
4
1 3
2 4
1 2
输出样例
1
3
2
4
解法:
#include <bits/stdc++.h>
using namespace std;
struct node{
int data,next;
}a[100005];
int n,m,x,y,p,q;
int head;
int main(){
cin>>n;
for(int i=1;i<=n-1;i++){
cin>>x>>y;
while(a[x].next){
x=a[x].next;
}
a[x].next=y;
a[y].data=x;
}
for(int j=1;j<=n;j++){
if(a[j].data==0){
head=j;
break;
}
}
for(int k=head;k!=0;k=a[k].next){
cout<<k<<endl;
}
}
本文来自博客园,作者:MegaSam,转载请注明原文链接:https://www.cnblogs.com/MegaSamTXL/p/17607148.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App