uliiw 2021-05-17 01:53 采纳率: 0%
浏览 44

大佬帮忙看一下这个关于顺序表基本操作的问题

//顺序表
#include<stdio.h>
#include<malloc.h>
#define ListInitSize	10 //线性表分配的初始容量
typedef struct LNode
{
	int date[ListInitSize];
	int last;
}List;
List L,*ptrl;
List I,*ptri;
//以下为原型声明
List *initiallist();
List *initiallist2();
void insertele(int x,int i,List *ptrl);
int deleteele(int i,List *ptrl);

void main()
{
    int i = 0;
    int t = 0;
    for(i = 0;i < 10;i++)
    {
        ptrl->date[i-1] = i*10;
        ptrl->last = i-1;
    }
    printf("%d",ptrl->date[0]);
//创建一个元素为(10,20,30,40,50,60,70,80,90,100)的线性表
    int x = 100;
    int a[6]={5,ListInitSize,ListInitSize+1,0,1,ListInitSize+2};
    for(i = 0;i<5;i++)//第一组
    {
    insertele(x,a[i-1],ptrl);//插入
    for(t = 0;t<=ptrl->last;t++)
    {
        printf("%d,",ptrl->date[t-1]);
    }
    deleteele(a[i-1],ptrl);//还原
    }
    i = 5;
    insertele(x,i,ptri);//第二组
    deleteele(i,ptri);//还原
    int b[5]={5,ListInitSize,1,ListInitSize+1,0};
    for(i = 0;i<5;i++)//第一组
    {
    int a;
    a = deleteele(b[i-1],ptrl);//删除
    insertele(x,a,ptrl);//还原
    }
    i = 5;
    deleteele(i,ptri);//第二组
    int c[4]={25,85,110,8};
    int h;
    for(i = 0;i<4;i++)
        {
            for(h = 0;h<=ptrl->last;h++)
            {
                if(c[i-1]<=ptrl->date[h])
            {
                    insertele(c[i-1],h,ptrl);//插入
                deleteele(h,ptrl);//还原
            }}
        }
    return;
}

List *initiallist()
//建立空顺序表1
{
    ptrl = (List*)malloc(sizeof(List));
    ptrl->last = -1;
    return ptrl;
}
List *initiallist2()
//建立空顺序表1
{
    ptri = (List*)malloc(sizeof(List));
    ptri->last = -1;
    return ptri;
}

void insertele(int x,int i,List *ptrl)
{
    int j;
    if(ptrl->last>=ListInitSize-1)
    {
        printf("表满");
        return;
    }
    else if(i<1||i>ptrl->last+2)
    {
        printf("位置不合法");
    }
     else
     {
         for(j = ptrl->last;j > i;j--)
    {
        ptrl->date[j+1] = ptrl->date[j];
    }
    ptrl->date[i - 1] = x;
    ptrl->last++;
    return;
    }


}
int deleteele(int i,List *ptrl)
{
    int j;
    int a;
    a = ptrl->date[i-1];
    if(i<1||i>ptrl->last + 1)
    {
        printf("不存在这个元素");
        return 0;
    }
    else
    {for (j = i;j<= ptrl->last;j++)
    {
        ptrl->date[j-1] = ptrl->date[j];
    }
    ptrl->last--;
    return a;}
}

跑出来结果是Process returned -1073741819 (0xC0000005)   execution time : 2.450 s
Press any key to continue.

  • 写回答

4条回答 默认 最新

  • CSDN专家-sinJack 2021-05-17 07:57
    关注

    看下控制台有没有报错信息。

    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮