建立链表
#include <iostream>
using namespace std;
typedef struct node {
int data;
struct node* next;
}LNode, * LinkList;
void tail_insertlist(LinkList& L) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode* r = L;
int num;
cin >> num;
while (num != 999) {
LNode* s = (LinkList)malloc(sizeof(LNode));
s->data = num;
s->next = r->next;
r->next = s;
r = s;
cin >> num;
}
LNode* p = L->next;
while (p != NULL) {
cout << p->data << ' ';
p = p->next;
}
}
void head_insertlist(LinkList& L) {
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int num;
cin >> num;
while (num != 999) {
LNode* s = (LinkList)malloc(sizeof(LNode));
s->data = num;
s->next = L->next;
L->next = s;
cin >> num;
}
LNode* p = L->next;
while (p != NULL) {
cout << p->data << ' ';
p = p->next;
}
}
void merge(LinkList L1, LinkList L2) {
LNode* p = L1->next;
LNode* q = L2->next;
LNode* s = (LinkList)malloc(sizeof(LNode));
LinkList L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode* r = L;
while (p != NULL && q != NULL) {
if (p->data < q->data) {
s = p;
p = p->next;
s->next = r->next;
r->next = s;
r = s;
}
else {
s = q;
q = q->next;
s->next = r->next;
r->next = s;
r = s;
}
}
if (p) {
r->next = p;
}
if(q) {
r->next = q;
}
LNode* t = L ->next;
while (t) {
cout << t->data << ' ';
t = t->next;
}
}
int main() {
LinkList L1, L2;
cout << "链表1:";
tail_insertlist(L1);
cout <<endl<< "链表2:";
tail_insertlist(L2);
cout << endl << "合并两个单链表:";
merge(L1, L2);
}