Maisis 2022-04-01 19:25 采纳率: 0%
浏览 18

使用数组建立有序单链表后,归并完成,但是输出归并后的数组不成功是为什么?显示引发读取访问权限冲突,就是在着手输出第二个数组中的元素的时候出现的

#include <iostream>
using namespace std;
#define MaxSize 50
typedef int ElemType;
typedef struct LNode
{
    ElemType data;                        //存放元素值
    struct LNode* next;                    //指向后继结点
    int length;
}LinkNode;

void CreateListR(LinkNode*& L, ElemType a[], int n)
{
    LinkNode* s, * r;
    L = (LinkNode*)malloc(sizeof(LinkNode));
    r = L;
    for (int i = 0; i < n; i++)
    {
        s = (LinkNode*)malloc(sizeof(LinkNode));
        s->data = a[i];
        r->next = s;
        r = s;

    }
    r->next = NULL;
    cout << "利用尾插法,单链表建立成功!" << endl;
}

void DispList(LinkNode* L)
{
    cout << "线性表输入如下:" << endl;
    LinkNode* p = L->next;
    while (p != NULL)
    {
        printf("%d", p->data);
        p = p->next;
        cout << "\t";

    }
    cout << "\n" << endl;


}
//有序表插入(以单链表方式)
void ListInsertd1(LinkNode*& L, ElemType e)
{
    LinkNode* pre = L, * p;
    while (pre->next != NULL && pre->next->data < e)
        pre = pre->next;
    p = (LinkNode*)malloc(sizeof(LinkNode));
    p->data = e;
    p->next = pre->next;
    pre->next = p;
    cout << "插入成功!" << endl;

}
//采用单链表存放有序表的二路归并算法如下
void UnionList1(LinkNode* LA, LinkNode* LB, LinkNode*& LC)
{
    LinkNode* pa = LA->next, * pb = LB->next, * r, * s;
    LC = (LinkNode*)malloc(sizeof(LinkNode));    //创建LC头节点
    r = LC;
    while (pa != NULL && pb != NULL)
    {
        if (pa->data < pb->data)
        {
            s = (LinkNode*)malloc(sizeof(LinkNode));
            s->data = pa->data;
            r->next = s; r = s;
            pa = pa->next;
        }
        else
        {
            s = (LinkNode*)malloc(sizeof(LinkNode));
            s->data = pb->data;
            s->next = s;
            r = s;
            pb = pb->next;
        }
    }
    while (pa != NULL)
    {
        s = (LinkNode*)malloc(sizeof(LinkNode));
        s->data = pa->data;
        r->next = s;
        r = s;
        pa = pa->next;
    }
    while (pb != NULL)
    {
        s = (LinkNode*)malloc(sizeof(LinkNode));
        s->data = pb->data;
        r->next = s;
        r = s;
        pb = pb->next;
    }
    cout << "归并成功" << endl;
    r->next = NULL;
}

int main()
{
    ElemType LA[] = { 1,5,6,8 };
    ElemType LB[] = { 4,7,9 };

    cout << "单链表法:" << endl;
    cout << endl;
    LinkNode* LN1;    LinkNode* LN2;    LinkNode* LN3;

    CreateListR(LN1, LA, 4);
    DispList(LN1);

    CreateListR(LN2, LB, 3);
    DispList(LN2);

    ListInsertd1(LN2, 99);
    DispList(LN2);

    UnionList1(LN1, LN2, LN3);
    DispList(LN3);
    system("pause");
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2023-01-06 15:42
    关注

    数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

    评论

报告相同问题?

问题事件

  • 创建了问题 4月1日

悬赏问题

  • ¥15 无源定位系统的时差估计误差标准差
  • ¥15 请问这个代码哪里有问题啊
  • ¥20 python--version在命令端输入结果Python is not defined怎么办?还有pip不是exe格式是不是没安装成功?
  • ¥15 通过GaussianView进行结构微调消除虚频
  • ¥15 调用transformers库
  • ¥15 由于导出的数据名字中带有/,导致Matlab打不开,怎么办?
  • ¥15 新硬盘安装的程序总是崩溃,提示遇到错误
  • ¥15 openpcdet自制数据集评估bev精度和3d精度相同
  • ¥15 excel 上下按钮 显示行
  • ¥20 云卓h12pro 数传问题