链表合并问题

来源:互联网 发布:软件行业编程工具 编辑:程序博客网 时间:2024/06/05 19:16

将两个已经从小到大排序好的单链表合并为新的链表,要求新的链表中仍然是从小到大有序。

#include <iostream>using namespace std;struct Node{int data;Node *next;};Node *input();Node *merge(Node *, Node *);void output(Node *);int main(){Node *s1 = input();Node *s2 = input();Node *s3 = merge(s1, s2);output(s3);return 0;}Node *input(){Node *head = NULL, *tail = NULL;int x;cin >> x;while (x != -1){Node *p = new Node;p->data = x;p->next = NULL;if (head == NULL)head = tail = p;else{tail->next = p;tail = p;}cin >> x;}return head;}void output(Node *head){Node *p = new Node;while (head != NULL){p = head;head = head->next;cout << p->data << " ";}cout << endl;}Node *merge(Node *t1, Node *t2){Node *head = NULL, *tail = NULL;while (t1 && t2){if (t1->data < t2->data){Node *p = new Node;p->data = t1->data;p->next = NULL;if (head == NULL)head = tail = p;else{tail->next = p;tail = p;}t1 = t1->next;}if (t1)if (t1->data >= t2->data){Node *p = new Node;p->data = t2->data;p->next = NULL;if (head == NULL)head = tail = p;else{tail->next = p;tail = p;}t2 = t2->next;}}if (t1)tail->next = t1;if (t2)tail->next = t2;return head;}



0 0
原创粉丝点击