some update
This commit is contained in:
@@ -2,8 +2,5 @@
|
|||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
int n;
|
|
||||||
n++;
|
|
||||||
cout << n << endl;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
134
test99-1.cpp
134
test99-1.cpp
@@ -1,134 +0,0 @@
|
|||||||
#include<bits/stdc++.h>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
typedef struct LNode{
|
|
||||||
int data;
|
|
||||||
struct LNode *next;
|
|
||||||
}LNode, *LinkList;
|
|
||||||
|
|
||||||
bool InitList(LinkList &L){
|
|
||||||
L = (LNode *)malloc(sizeof(LNode)); // 带头节点
|
|
||||||
if(L == NULL) return false;
|
|
||||||
L->next = NULL;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void InputList(LinkList &L){
|
|
||||||
int x; cin>>x;
|
|
||||||
LinkList tail = L;
|
|
||||||
while(x != -99999){ // 输入 -99999 结束输入
|
|
||||||
LNode *newNode = (LNode*)malloc(sizeof(LNode));
|
|
||||||
newNode->data = x; newNode->next = NULL;
|
|
||||||
tail->next = newNode;
|
|
||||||
tail = newNode;
|
|
||||||
cin >> x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PrintList(LinkList &L){
|
|
||||||
LinkList p = L->next;
|
|
||||||
while(p != NULL){
|
|
||||||
cout << p->data << ",\n"[p->next == NULL];
|
|
||||||
p = p->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
LinkList p1, p2, p3, tmp;
|
|
||||||
void MergeList1(LinkList &L1, LinkList &L2, LinkList &L3){
|
|
||||||
// 升序合并并去重
|
|
||||||
p1 = L1->next; p2 = L2->next;
|
|
||||||
L3 = p3 = L1;
|
|
||||||
while(p1 && p2){
|
|
||||||
if(p1->data < p2->data){
|
|
||||||
p3->next = p1; p3 = p1; p1 = p1->next;
|
|
||||||
}else if(p2->data < p1->data){
|
|
||||||
p3->next = p2; p3 = p2; p2 = p2->next;
|
|
||||||
}else{
|
|
||||||
p3->next = p1; p3 = p1; p1 = p1->next;
|
|
||||||
tmp = p2->next; delete p2; p2 = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p3->next = p1?p1:p2;
|
|
||||||
delete L2;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MergeList2(LinkList &L1, LinkList &L2, LinkList &L3){
|
|
||||||
// 降序合并
|
|
||||||
p1 = L1->next; p2 = L2->next;
|
|
||||||
L3 = L1;
|
|
||||||
L3->next = NULL;
|
|
||||||
while(p1 || p2){
|
|
||||||
if(!p1) { tmp = p2; p2 = p2->next; }
|
|
||||||
else if(!p2) { tmp = p1; p1 = p1->next; }
|
|
||||||
else if(p1->data <= p2->data) { tmp = p1; p1 = p1->next; }
|
|
||||||
else { tmp = p2; p2 = p2->next; }
|
|
||||||
|
|
||||||
tmp->next = L3->next; L3->next = tmp;
|
|
||||||
}
|
|
||||||
delete L2;
|
|
||||||
}
|
|
||||||
|
|
||||||
void MixList(LinkList &L1, LinkList &L2, LinkList &L3){
|
|
||||||
// 两链表相交
|
|
||||||
p1 = L1->next; p2 = L2->next;
|
|
||||||
L3 = p3 = L1;
|
|
||||||
while(p1 && p2){
|
|
||||||
if(p1->data == p2->data){
|
|
||||||
p3->next = p1; p3 = p1; p1 = p1->next;
|
|
||||||
tmp = p2; p2 = p2->next; delete tmp;
|
|
||||||
}else if(p1->data < p2->data){
|
|
||||||
tmp = p1; p1 = p1->next; delete tmp;
|
|
||||||
}else{
|
|
||||||
tmp = p2; p2 = p2->next; delete tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while(p1) { tmp = p1; p1 = p1->next; delete tmp; }
|
|
||||||
while(p2) { tmp = p2; p2 = p2->next; delete tmp; }
|
|
||||||
|
|
||||||
p3->next = NULL;
|
|
||||||
delete L2;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DiffList(LinkList &L1, LinkList &L2, int &n){
|
|
||||||
// 两链表相差
|
|
||||||
p1 = L1->next; p2 = L2->next;
|
|
||||||
p3 = L1;
|
|
||||||
while(p1 && p2){
|
|
||||||
if(p1->data < p2->data){
|
|
||||||
p3 = p1; p1 = p1->next; n++;
|
|
||||||
}else if(p1->data > p2->data){
|
|
||||||
p2 = p2->next;
|
|
||||||
}else{
|
|
||||||
p3->next = p1->next;
|
|
||||||
tmp = p1; p1 = p1->next; delete tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(){
|
|
||||||
LinkList L1, L2, L3; InitList(L1); InitList(L2); InitList(L3);
|
|
||||||
InputList(L1); InputList(L2); // PrintList(L1); PrintList(L2); // 初始化并输入输出两个链表
|
|
||||||
MergeList1(L1, L2, L3);
|
|
||||||
cout << "两链表升序合并并去重: "; PrintList(L3);
|
|
||||||
|
|
||||||
LinkList L4, L5, L6; InitList(L4); InitList(L5); InitList(L6);
|
|
||||||
InputList(L4); InputList(L5); // PrintList(L4); PrintList(L5); // 初始化并输入输出两个链表
|
|
||||||
MergeList2(L4, L5, L6);
|
|
||||||
cout << "两链表降序合并: "; PrintList(L6);
|
|
||||||
|
|
||||||
LinkList L7, L8, L9; InitList(L7); InitList(L8); InitList(L9);
|
|
||||||
InputList(L7); InputList(L8);
|
|
||||||
MixList(L7, L8, L9);
|
|
||||||
cout << "两链表相交: "; PrintList(L9);
|
|
||||||
|
|
||||||
LinkList L10, L11; InitList(L10); InitList(L11);
|
|
||||||
InputList(L10); InputList(L11); int n = 0;
|
|
||||||
DiffList(L10, L11, n);
|
|
||||||
cout << "两链表相差: "; PrintList(L10);
|
|
||||||
cout << "元素个数位: " << n << endl;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
/* test samples
|
|
||||||
1 3 5 7 9 13 15 -99999
|
|
||||||
2 4 6 8 10 11 13 14 15 -99999
|
|
||||||
*/
|
|
||||||
Reference in New Issue
Block a user