Zbling_ 2021-07-07 23:38 采纳率: 0%
浏览 302

引发了未经处理的异常:写入访问权限冲突

#include<iostream>
using namespace std;
#define MAXSIZE 100//顺序表A的空间
typedef struct
{
    int key;
    char* otherinfo;
}ElemType;
typedef struct//顺序表的存储结构
{
    ElemType* r;//存储空间的基地址
    int length;//顺序表A的长度
}SqList;
/*冒泡排序*/
void BubbleSort1(SqList& LA)
{
    int m, j, flag;
    ElemType t;//新建顺序表t
    m = LA.length - 1;
    flag = 1;//用flag标记某一趟排序是否发生交换
    while ((m > 0) && (flag == 1))
    {
        flag = 0;//flag置为0,如果本趟排序没有发生交换,则不会执行下一趟排序
        for (j = 1; j <= m; j++)
        {
            if (LA.r[j].key > LA.r[j + 1].key)
            {
                flag = 1;//flag置为1,表示本趟排序发生了交换
                t = LA.r[j];
                LA.r[j] = LA.r[j + 1];
                LA.r[j + 1] = t;//交换前后两个记录
            }
        }
        --m;
    }
}
void BubbleSort2(SqList& LB)
{
    int m, j, flag;
    ElemType t;//新建顺序表t
    m = LB.length - 1;
    flag = 1;//用flag标记某一趟排序是否发生交换
    while ((m > 0) && (flag == 1))
    {
        flag = 0;//flag置为0,如果本趟排序没有发生交换,则不会执行下一趟排序
        for (j = 1; j <= m; j++)
        {
            if (LB.r[j].key < LB.r[j + 1].key)
            {
                flag = 1;//flag置为1,表示本趟排序发生了交换
                t = LB.r[j];
                LB.r[j] = LB.r[j + 1];
                LB.r[j + 1] = t;//交换前后两个记录
            }
        }
        --m;
    }
}
void CreatList1(SqList& LA)
{
    int i, n;
    cout << "请输入LA数据个数" << endl;
    cin >> n;
    cout << "请输入LA待排序的数据:" << endl;
    for(i=1;i<=n;i++)
    {
        cin >> LA.r[i].key;
        LA.length++;
    }
}
void CreatList2(SqList &LB)
{
    int i, n;
    cout << "请输入LB数据个数" << endl;
    cin >> n;
    cout << "请输入LB待排序的数据:" << endl;
    for(i=1;i<=n;i++)
    {
        cin >> LB.r[i].key;
        LB.length++;
    }
}
void show1(SqList LA)
{
    int i;
    for (i = 1; i <= LA.length; i++)
        cout << LA.r[i].key <<" ";
    cout << endl;
}
void show2(SqList LB)
{
    int i;
    for (i = 1; i <= LB.length; i++)
        cout << LB.r[i].key << " ";
    cout << endl;
}
bool Merge(SqList LA, SqList LB) 
{
    int i = 0, j = 0, k = 0;
    while (i < LA.length || j < LB.length) 
    {
        if (LA.r[i].key < LB.r[j].key)
        {
            LA.r[k++] = LA.r[i++];
            LA.length++;
        }
        else 
        {
            LA.r[k++] = LB.r[j++];//**在这一句显示了错误__**
            LA.length++;
        }
    }
    return true;
}
int main()
{
    SqList LA;
    LA.r = new ElemType[MAXSIZE + 1];
    LA.length = 0;
    CreatList1(LA);
    BubbleSort1(LA);
    cout << "LA排序后的结果为:" << endl;
    show1(LA);
    SqList LB;
    LB.r = new ElemType[MAXSIZE + 1];
    LB.length = 0;
    CreatList2(LB);
    BubbleSort2(LB);
    cout << "LB排序后的结果为:" << endl;
    show2(LB);
    Merge(LA, LB);
    cout << "合并结果为:" << endl;
    show1(LA);
    BubbleSort1(LA);
    cout << "合并后排序后的结果为:" << endl;
    show1(LA);
    return 0;
}

这个程序好像并没有问题的样子,可是在调试的时候却发生了错误
显示:引发了异常: 写入访问权限冲突。
LA.r 是 0x2332112。

不知道该怎么改了

  • 写回答

1条回答 默认 最新

  • 我爱OJ 2023-02-21 12:18
    关注

    我有一个类似的代码,你可以参考一下

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int arr[10000];
    int main() {
        int n;
        cin>>n;
        for(int j=0;j<n;j++){
            cin>>arr[j];
        }
        sort(arr, arr + n, greater<int>());
        for(int i = 0;i < n;i++){
            cout<< arr[i] <<" ";
        } 
        return 0;
    }
    

    可以采纳么

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条