兩個有序連結串列序列的交集
兩個有序連結串列序列的交集
已知兩個非降序連結串列序列S1與S2,設計函式構造出S1與S2的交集新連結串列S3。
輸入格式:
輸入分兩行,分別在每行給出由若干個正整數構成的非降序序列,用−1表示序列的結尾(−1不屬於這個序列)。數字用空格間隔。
輸出格式:
在一行中輸出兩個輸入序列的交集序列,數字間用空格分開,結尾不能有多餘空格;若新連結串列為空,輸出NULL
。
輸入樣例:
1 2 5 -1
2 4 5 8 10 -1
輸出樣例:
2 5
標程
#include<map>
#include<list>
#include<cmath>
#include<queue>
#include<stack>
#include<cstdio>
#include<vector>
#include<iomanip>
#include<cstring>
#include<iterator>
#include<iostream>
#include<algorithm>
#define R register
#define LL long long
#define pi 3.141
#define INF 1400000000
using namespace std;
//兩題寫法幾乎完全相同
struct Node{
int number;
Node* next;
};
inline int read() {
int number = 0;
int f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') {
f = -1;
}
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
number = number * 10 + ch - '0', ch = getchar();
}
return number * f;
}
int main(){
Node* List1 = (Node*)malloc(sizeof(Node));
List1->next = NULL;
Node* List2 = (Node*)malloc(sizeof(Node));
List2->next = NULL;
Node* List3 = (Node*)malloc(sizeof(Node));
List3->next = NULL;
Node *point = (Node*)malloc(sizeof(Node));
int number = read();
point = List1;
while (number != -1) {
Node *temp = (Node*)malloc(sizeof(Node));
temp->number = number;
temp->next = NULL;
point->next = temp;
//point = temp;
memcpy(&point, &temp, sizeof(temp));
number = read();
}
point = List2;
number = read();
while (number != -1) {
Node *temp = (Node*)malloc(sizeof(Node));
temp->number = number;
temp->next = NULL;
point->next = temp;
point = temp;
number = read();
}
Node *point1, *point2, *point3;
point3 = List3;
point1 = List1->next, point2 = List2->next;
while (point1 != NULL && point2 != NULL) {
if (point1->number == point2->number) {
point3->next = point1;
point3 = point1;
point1 = point1->next;
point2 = point2->next;
}
else if (point1->number < point2->number) {
point1 = point1->next;
}
else {
point2 = point2->next;
}
}
point = List3->next;
if (point == NULL) {
printf("NULL");
}
else {
bool flag = false;
while (point != NULL) {
if (flag == false) {
flag = !flag;
}
else {
printf(" ");
}
printf("%d", point->number);
point = point->next;
}
}
return 0;
}
相關文章
- 合併兩個有序連結串列
- 7-2 兩個有序連結串列序列的合併 (20分)
- 7-24 兩個有序連結串列序列的合併 (20 分)
- 02-線性結構1 兩個有序連結串列序列的合併 (15分)
- leetcode:21. 合併兩個有序連結串列(連結串列,簡單)LeetCode
- 每日leetcode——21. 合併兩個有序連結串列LeetCode
- 遞迴:21. 合併兩個有序連結串列遞迴
- 【LeetCode Hot 100】21. 合併兩個有序連結串列LeetCode
- Leetcode 21 合併兩個有序連結串列 學習感悟LeetCode
- 【演算法-java實現】合併兩個有序連結串列演算法Java
- Fourth. LeetCode 21:MergeTwo Sorted Lists 合併兩個有序連結串列LeetCode
- 23. 合併K個元素的有序連結串列
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 兩個連結串列的第一個公共結點
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- 讓我們一起啃演算法----合併兩個有序連結串列演算法
- 測試開發每日演算法 Leecode21. 合併兩個有序連結串列演算法
- 兩個連結串列的第一個公共節點
- 【LeetCode連結串列#9】圖解:兩兩交換連結串列節點LeetCode圖解
- JZ-036-兩個連結串列的第一個公共結點
- 前端菜鳥的每週一道演算法題(三) 合併兩個有序連結串列前端演算法
- 2024/11/27 【連結串列】LeetCode 24 兩兩交換連結串列中的節點 & LeetCode 19 刪除連結串列的倒數第N個節點LeetCode
- 將兩個升序連結串列合併為一個新的 升序 連結串列並返回。(新手篇06)
- JZ-016-合併兩個排序的連結串列排序
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- 劍指offer——兩個連結串列的第一個公共結點C++C++
- 遞增的整數序列連結串列的插入
- Day 4 | 24. 兩兩交換連結串列中的節點 、 19.刪除連結串列的倒數第N個節點 、面試題 02.07. 連結串列相交 、142.環形連結串列II面試題
- 【LeetCode】【連結串列】劍指 Offer 52. 兩個連結串列的第一個公共節點 思路解析和程式碼LeetCode
- leetcode雙週賽(2)-合併兩個連結串列LeetCode
- 為什麼Oracle要搞出兩個髒連結串列Oracle
- 第四天:● 24. 兩兩交換連結串列中的節點 ● 19.刪除連結串列的倒數第N個節點 ● 面試題 02.07. 連結串列相交 ● 142.環形連結串列II面試題
- python資料結構——連結串列(無序列表)Python資料結構
- 建立連結串列兩種方法的區別
- leetcode 24 兩兩交換連結串列中的節點LeetCode
- 劍指Offer-38-兩個連結串列的第一個公共節點
- 程式碼隨想錄第4天 | 24. 兩兩交換連結串列中的節點、19.刪除連結串列的倒數第N個節點、面試題 02.07. 連結串列相交、142.環形連結串列II面試題