| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 467 人关注过本帖
标题:写了个线性表的代码,编译通过但是运行报错,求大神指点迷津
只看楼主 加入收藏
zggdsgs
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2015-4-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
写了个线性表的代码,编译通过但是运行报错,求大神指点迷津
#include<stdio.h>
#include<stdlib.h>

#define LIST_INIT_SIZE  5    //线性表存储空间的初始分配量
#define LINSTINCREMENT  1    //线性表存储空间的分配增量
typedef int Status;  
typedef int ElemType;
typedef  struct {  
 ElemType *elem;             //存储空间基址
 int length;                 //当前长度  
 int listsize;               //当前分配的存储容量(以sizeof(ElemType)为单位)
 }SqList; SqList L;
void main()
{int i,e,j;
 Status InitList_Sq(SqList &L);
 Status creat(SqList &L);
 Status abc(SqList &L);
 Status ListDelete_Sq(SqList &L, int i, ElemType &e);
 Status ListInsert_Sq(SqList &L, int i, ElemType e);

 printf("\t\t请选择对顺序表的操作,操作菜单如下:             \n");
 printf("\t\t*************************************************\n");
 printf("\t\t     1   建立顺序表(C)                           \n");
 printf("\t\t     2   初始化顺序表(N)                         \n");
 printf("\t\t     3   顺序表中插入元素(I)                     \n");
 printf("\t\t     4   数据表中删除元素(D)                     \n");
 printf("\t\t     5   退出系统(E)                             \n");
 printf("\t\t*************************************************\n");
 printf("\t\t作者:HLX                                        \n");
 
   
     printf("\n选择进行的操作:");
     do   {      
         scanf("%d",&j);   
     if(j<1||j>5)   
         printf("输入错误,重新输入正确的数字\n");  
 }while(j<1||j>5);
switch(j)
        {case 1:creat(L);
                break;  
         case 2:InitList_Sq(L);
                break;  
         case 3:ListInsert_Sq(L,  i,  e);
                break;  
         case 4:ListDelete_Sq(L,  i,  e);
                break;  
         case 5:exit(0);
                break;
}
 
    }
 


Status InitList_Sq(SqList &L)    //构造一个新的线性表L。
 {  
 L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));   
 if (L.elem==0)
 {     printf("存储分配失败\n");
     return 0;
 }
 else
 {L.length = 0;                     // 空表长度为0     
 L.listsize = LIST_INIT_SIZE;      // 初始存储容量  
 }   
 return 1;
}
Status creat(SqList &L)
{int i,n;
do{
    printf("请输入线性表的元素的个数:");  
 scanf("%d",&n);  
    if(n<1||n>LIST_INIT_SIZE)     
     printf("输入错误,请重新输入");
}while(n<1||n>LIST_INIT_SIZE);
 for(i=0;i<n;i++)                  //读入元素  
 scanf("%d",&L.elem[i]);   
 L.length =n;
 for(i=0;i<L.length;i++)           //利用循环输出元素
      
   printf("%d ",L.elem[i]);  
 return 0;
}


Status ListInsert_Sq(SqList &L, int i, ElemType e)    // 在线性表L中插入新的元素e
 { ElemType *p;   
   int j,*newbase;
   
   printf("请输入你要插入的数据");
   scanf("%d",&e);
   
   do                            //输入数据插入的位置直到输入正确的位置   
    {printf("请输入你要插入的位置");   
     scanf("%d",&i);
     if(i<1 || i>L.length+1)
       printf("请重新输入正确的位置");
    }while(i<1 || i>L.length+1);
   if (L.length >= L.listsize)

 {       // 当前存储空间已满,增加容量   
   ElemType *newbase = (ElemType *)realloc(L.elem, (L.listsize+LINSTINCREMENT)*sizeof (ElemType));     
   if (newbase==0) return 0;       // 存储分配失败  
   L.elem = newbase;                 // 新基址   
   L.listsize += LINSTINCREMENT;     // 增加存储容量
  }   
   ElemType *q = &(L.elem[i-1]);       // q为插入位置   
   for (p = &(L.elem[L.length-1]);p>=q;--p) *(p+1) = *p;   // 插入位置及之后的元素右移  
   *q = e;                       // 插入e  
   ++L.length;                   // 表长增1  
   for(j=0;j<L.length;j++)
   { printf("%d ",L.elem[j]); }
   return 0;
}
Status ListDelete_Sq(SqList &L, int i, ElemType &e)              
 // 在顺序线性表L中删除第i个元素,并用e返回其值。
{      ElemType j,*p, *q;
do{ printf("请输入你需要删除第几个数据");
  scanf("%d",&i);  
 if (i<1 || i>L.length)
     printf("请重新输入正确的位置数字");  // i值不合法
 }while(i<1 || i>L.length);
 p = &(L.elem[i-1]);                   // p为被删除元素的位置
 e = *p;                               // 被删除元素的值赋给e  
 q = L.elem+L.length-1;                // 表尾元素的位置   
 for (++p; p<=q; ++p) *(p-1) = *p;     // 被删除元素之后的元素左移   
 --L.length;                           // 表长减1
 for(j=0;j<L.length;j++)
     { printf("%d ",L.elem[j]); }
 return 0;
}
搜索更多相关主题的帖子: include 线性表 空间 
2015-04-06 22:34
zggdsgs
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2015-4-6
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
就是这样
2015-04-06 22:42
zhou78yang
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:18
专家分:100
注 册:2014-3-18
收藏
得分:20 
InitList倒是记得给elem分配空间,create却没有。
还有,排版很重要!
2015-04-06 23:37
zggdsgs
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2015-4-6
收藏
得分:0 
回复 3楼 zhou78yang
脑抽了,我竟然看不出那里错了,谢谢啦
2015-04-07 12:39
快速回复:写了个线性表的代码,编译通过但是运行报错,求大神指点迷津
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029420 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved