如何能实现动态创建链表呢?

能实现类似输入createlist aaa 就能新建一个aaa的链表并保存起来(后边还能用于多个链表合并)

createlist bbb 建立新链表bbb保存起来  我现在主要是新建了aaa 再新建bbb ,aaa就会被bbb给初始化掉了

怎么办 底下是我写的createlist代码 

List* CreateList(List* head, char a, int x)
{
    List* r, * s;            //r老结点 s新节点
    head = new List;        //动态分配内存
    head->data = a;
    head->next = NULL;
    r = head;
    cout << "输入" << x << "个字符:";

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

上边代码写错了 是这个!

List* CreateList(char a, int x)
{
    List* head = new List;
    head->data = a;
    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;
}
 

我该怎么写才能创建多个链表呀 现在创建了一个 下一个要再建的话上一个就没了

List* list1= CreateList(a, 3)

List* list2= CreateList(b, 3)

有问题吗?这是两个链表。不存在覆盖的问题。

 

你想做的是不是创建一个链表,先创建一个aaa node,后面再连上一个bbb node?

如果是的话,那你现在的问题可能是没弄清楚list和node这两个概念。

一般create用于创建一个链表的表头,并不使用它继续往链表里添加新的元素。

添加节点我们需要再写一个函数,可以命名为add之类的。意思就是create返回head,add实现添加node。这么说,应该明白了吧