fafafaqfafafa 2021-05-17 01:27 采纳率: 0%
浏览 28

跑不出来,希望大佬们看看问题在哪

//顺序表
#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] = (i + 1)*10;
        ptrl->last = i;
    }
//创建一个元素为(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],ptrl);//插入
    for(t = 0;t<ptrl->last;t++)
    {
        printf("%d,",ptrl->date[i]);
    }
    deleteele(a[i],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],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]<=ptrl->date[h])
            {
                    insertele(c[i],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.037 s
Press any key to continue.

  • 写回答

1条回答 默认 最新

  • fafafaqfafafa 2021-05-17 01:49
    关注
    //顺序表
    #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;}
    }
    

    自己又改了一点,但是没解决问题

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配