2025年【8557】建立两个非递减有序单向链表,然后合并成一个非递增链表

【8557】建立两个非递减有序单向链表,然后合并成一个非递增链表关注公众号程序猿从入门到入土查询更方便哦 建立两个非递减有序单向链表 然后合并成一个非递增链表 include iostream define RESULT int define OK 1 define ERROR 0 using namespace std typedef struct Node iostream

大家好,我是讯享网,很高兴认识大家。


讯享网
关注公众号程序猿从入门到入土查询更方便哦

建立两个非递减有序单向链表,然后合并成一个非递增链表

 #include<iostream> #define RESULT int #define OK 1 #define ERROR 0 using namespace std; typedef struct Node { 
    int data; Node* next; }LNode, * LinkList; RESULT InitList(LinkList& L); //初始化链表 RESULT InsertData_Head(LinkList& L, int data); //头插 RESULT InsertData_Back(LinkList& L, int data); //尾插 RESULT InsertData_Middle(LinkList& L, int NO, int data); //在NO位置插入元素 RESULT Output_LinkList(LinkList& L); //打印链表 LinkList List_Combine(LinkList& L_1, LinkList& L_2); //合并链表,仅原空间 void ListSort(LinkList& L); void reverse(LinkList& L) { 
    LinkList p; int n = 1; p = L->next; while (p->next != NULL) { 
    p = p->next; n++; } LinkList back, back1, p1; p1 = L->next; p = L; for (int i = 0; i < n - 1; i++) { 
    while (p1->next != NULL) { 
    p1 = p1->next; } back = p1; p1 = L; while (p1->next->next != NULL) { 
    p1 = p1->next; } back1 = p1; back->next = p->next; back1->next = NULL; p->next = back; p = p->next; } } int main() { 
    //初始化链表L_1 LinkList L_1; if (!InitList(L_1)) { 
    return 0; } int n; cin >> n; while (n != 0) { 
    InsertData_Back(L_1, n); cin >> n; } ListSort(L_1); //初始化链表L_2 LinkList L_2; if (!InitList(L_2)) { 
    return 0; } cin >> n; while (n != 0) { 
    InsertData_Back(L_2, n); cin >> n; } ListSort(L_2); LinkList L_3 = new LNode; L_3 = List_Combine(L_1, L_2); reverse(L_3); Output_LinkList(L_3); //清除空间 delete(L_1); delete(L_2); return 0; } RESULT InitList(LinkList& L) { 
    L = new LNode; L->next = NULL; return OK; } RESULT InsertData_Head(LinkList& L, int data) { 
    LinkList temp = new LNode; temp->data = data; temp->next = L; L = temp; return OK; } RESULT InsertData_Back(LinkList& L, int data) { 
    LinkList temp = new LNode; temp->data = data; temp->next = NULL; LinkList p = L; while (p->next != NULL) { 
    p = p->next; } p->next = temp; return OK; } RESULT InsertData_Middle(LinkList& L, int NO, int data) { 
    LinkList temp = new LNode; temp->data = data; LinkList p = L; for (int i = 0; i < NO - 2; i++) { 
    p = p->next; } temp->next = p->next; p->next = temp; return OK; } RESULT Output_LinkList(LinkList& L) { 
    LinkList temp = L->next; while (temp != NULL) { 
    cout << temp->data << " "; temp = temp->next; } return OK; } LinkList List_Combine(LinkList& L_1, LinkList& L_2) { 
    //链表指针 LinkList p_1 = L_1->next; LinkList p_2 = L_2->next; LinkList L_3 = new LNode; LinkList p = L_3; while (p_1 != NULL && p_2 != NULL) { 
    /*if (p_1->data == p_2->data) { p->next = p_1; p = p_1; p_1 = p_1->next; p_2 = p_2->next; }*/ if (p_1->data < p_2->data) { 
    p->next = p_1; p = p_1; p_1 = p_1->next; } else { 
    p->next = p_2; p = p_2; p_2 = p_2->next; } } if (p_1 == NULL && p_2 != NULL) { 
    p->next = p_2; } if (p_2 == NULL && p_1 != NULL) { 
    p->next = p_1; } return L_3; } void ListSort(LinkList &head) { 
    LinkList p, q; for (p = head->next; p != NULL; p = p->next) for (q = p->next; q != NULL; q = q->next) if (p->data > q->data){ 
    int t1 = p->data; p->data = q->data; q->data = t1; } } 

讯享网
小讯
上一篇 2025-03-28 09:09
下一篇 2025-02-14 07:33

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/19133.html