怎么讲新建好的链表存入容器中(容器最好也是链表不能用标准模板库)

下面是我写好的代码 (刚能创建出链表)

我想做的是把创建链表avc 和 bcd然后让这两个链表里的内容合并

 

#include<iostream>
#include<string>
using namespace std;

struct List
{
    char  data;                //数据域
    List* next;        //指针域
};


//新建链表头结点初始化
List* HeadNode() {
    List* head = new List;
    head->data = 0;
    head->next = NULL;
    return head;
}

//新建链表数据结点
List* CreateList(List* head, int x)
{
    List* pre = head;

    cout << "输入" << x << "个字符:";

    for (int i = 0; i < x; i++)
    {
        List* p = new List;
        cin >> p->data;                                        //新节点的数据域填数据
        pre->next = p;                                        //老结点的next指针指向新节点
        pre = p;                                            //让新节点赋值给老结点 形成一次循环
        pre->next = NULL;                                    //让最后一个新生成的结点指向空 变成尾结点
    }
    return head;
}


//计算结点个数
int getLength(List* head) {
    int count = 0;
    List* p = head->next;
    while (p != NULL) {
        p = p->next;
        count++;
    }
    return count;
}
//在指定位置插入数据
void InsertList(List* head, int n) {
    List* p = head;
    if (n<0 || n>getLength(head)) {
        cout << "输入错误" << endl;
    }
    else {
        for (int i = 1; i < n; i++) {
            p = p->next;
        }
        List* newNode = new List;        //构造一个要插入的新的结点
        cout << "请输入内容:";
        cin >> newNode->data;            //输入人要插入新的结点的数据域
        newNode->next = p->next;        //新节点的指针域指向下一个结点
        p->next = newNode;                //上一个结点的指针域指向新节点
    }

}
//删除指定信息
void DeleteList(List* head, int n) {
    List* p = head;
    if (n<0 || n>getLength(head) - 1) {
        cout << "输入错误" << endl;
    }
    else {
        for (int i = 1; i < n; i++) {            //找到删除结点的上一个结点
            p = p->next;
        }
        p->next = p->next->next;                //将删除节点的上一个结点指向它的下下个结点
    }

}
//删除全部链表
void DeleteAll(List* head) {

    List* p = head->next;                //p表示下一个结点
    List* q = new List;                    //q表示上一个结点
    while (p != NULL) {
        q = p;                            //让p的下一个结点等于新节点
        p = p->next;                    //让p结点等于下一个结点
        head->next = p;                    //头结点的下一个结点等于p
        q->next = NULL;                    //q的下一个结点等于空
        delete q;                        //释放q
    }
    head->next = NULL;                    //让head下一个结点指向空

}

//两个链表合并
List* ConnectList(List* a, List* b)
{
    if (a == NULL) { return b; };
    if (b == NULL) { return a; };
    if (a->data < b->data) {
        a->next = ConnectList(a->next, b);//递归调用
        return a;
    }
    else {
        b->next = ConnectList(a, b->next);//递归调用
        return b;
    }

}


//输出链表
void Print(List* head)
{
    List* p = head->next;                //p是第一个结点
    while (p != NULL)
    {
        cout << p->data;                //输出结点的数据域
        p = p->next;                    //让结点p后移
    }
}

//主函数
int main()
{

    
    List* p = HeadNode();
    List* q = HeadNode();
    List* hebing = HeadNode();
    while (1) {
        string a;
        cin >> a;
        if (a == "createlist") {
            int n;
            cout << "请输入结点个数:";
            cin >> n;
            CreateList(p, n);
            cout << "创建成功" << endl;
        }
        if (a == "insertnode") {
            int n;
            cout << "请输入插入的位置:";
            cin >> n;
            InsertList(p, n);
            cout << "插入成功!" << endl;
        }
        if (a == "deletenode") {
            int n;
            cout << "请输入删除的位置:";
            cin >> n;
            DeleteList(p, n);
            cout << "删除成功!" << endl;
        }
        if (a == "deleteall") {
            DeleteAll(p);
            cout << "删除成功!" << endl;
        }
        if (a == "print") {
            Print(p);
            cout << endl;
        }if (a == "back") {
            break;
        }if (a == "merge") {
            hebing = ConnectList(p, q);
        }
        if (a == "printmerge") {
            Print(hebing);
        }
    }
    delete p;
    delete q;
    delete hebing;
    return 0;
}
 

实在不行 vector map都行