链表合并(ZCMU期末考试用题)

线性链表的合并。设线性表A = (a1, a2, ……, am),B = (b1, b2, ……,bn),试写一个按下列规则合并A,B为线性表C的算法,使得
C = (a1,b1,……,am,bm,bm+1,……,bn),当m<=n时
C = (a1,b1,……,an,bn,an+1,……,am),当m>n时
要求:a)线性表A,B和C均以单链表作存储结构,且C表利用A表和B表中的节点空间构成。
b)能自由输入A,B;输出C
给定测试数据:A:78、29、124、900、76、890。 B:3、567、87、12、29

题目分析

这道题目是八十分的题目,懂得都懂。就说一下会卡在什么地方吧!

  • 头插法还是尾插法,尾插法,尾插法代码是否记得 tmp->next = null,r->next = tmp r =tmp;
  • 打印从什么时候打印 先拿到next 然后 判断眺 p->next;
  • 合并,s->next = p; s = p;p=p->next

注重这几点,基本上可以出炉

答案效果

在这里插入图片描述

完整代码

记得要封装,封装之后才会使代码变短;

#include<iostream>
using namespace std;
typedef struct LNode{
    
    
    int data;
    struct LNode*next;
}LNode,*LinkList;

void InitList(LinkList &A,int m){
    
    
    LinkList p = A;
    for(int i =0;i<m;i++){
    
    
        LNode* tmp = new LNode;
        cin >> tmp->data;
        tmp->next = NULL;
        p->next = tmp;
        p = tmp;
    }
}
void print(LinkList A){
    
    
    LinkList p = A->next;
    while(p != NULL){
    
    
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
}
void Init(LinkList &A){
    
    
    A = new LNode;
    A->next = NULL;
}
void Merge(LinkList A,LinkList B,LinkList &C){
    
    
    LinkList  p = A->next;
    LinkList  q = B->next;
    LinkList  s = C;
    int cnt = 0;
    while(p != NULL && q != NULL){
    
    
        if(cnt%2==0){
    
    
            s->next =p;
            s = p;
            p = p->next;
        }else{
    
    
            s->next = q;
            s= q;
            q = q->next;
        }
        cnt++;
    }
    s->next = p?p:q;
}
int main(){
    
    
    int n;
    LinkList A,B,C;
    int m;
    Init(A);
    Init(B);
    Init(C);
    cout << endl << "Please input A num" << endl;
    cin >> m; //输入A的m值
    InitList(A,m);
    cout << endl << "A value :" << endl;
    print(A);
    cout << endl << "Please input B num" << endl;
    cin >> n; //输入B的值
    InitList(B,n);
    cout << endl << "B value :" << endl;
    print(B);
    cout << endl << "merged" << endl;
    Merge(A,B,C);
    print(C);
}

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/125273945