| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3016 人关注过本帖
标题:自己苦想终于解决了::大家帮我看看错在哪里了,题目也贴出了,Segmentati ...
只看楼主 加入收藏
zhao72349947
Rank: 1
来 自:成都东软学院
等 级:新手上路
帖 子:60
专家分:5
注 册:2012-10-20
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:7 
自己苦想终于解决了::大家帮我看看错在哪里了,题目也贴出了,Segmentation fault:段错误,检查是否有数组越界,指针异常,访问到不应该访问的内存区
程序代码:
Description
有一个线性表需要你实现插入和删除操作。

ins x n:表示在x位置插入整数n。

del x:表示删除x位置上的数据。

show:表示打印出该表中的所有元素。

Input
有多组测试数据。每个测试数据第一行给出操作数M(0<M<50000);之后的M行随机给出操作类型。

Output
输出show的结果,一个show操作的结果占一行。

Sample Input
8
ins 1 50
ins 2 56
ins 2 39
show
ins 1 34
show
del 2
show
Sample Output
50 39 56
34 50 39 56


#include<stdio.h>
#define MAXSIZE 100
struct sqllist
{
       int date[MAXSIZE];
       int last;
};
struct sqllist L;

int init_L()
{
   L.last=-1;
}

int insert_L()
{
    int i,x,j;
    scanf("%d%d",&i,&x);
    if(L.last>=MAXSIZE)
    {
    printf("表满!\n");
    return 0;
    }
    if(i<1||i>(L.last+2))
    {
    printf("i的值不对!\n");
     return 0;
    }
    for(j=L.last;j>=i-1;j--)
    {
    L.date[j+1]=L.date[j];
    }
    L.date[i-1]=x;
    L.last++;
    return 1;
}

int delete_L()
{
    int n,m,i,j;
    i=L.last;
     scanf("%d",&n);
     for(j=n;j<=i;j++)
        L.date[j-1]=L.date[j];
          L.last=L.last-1;
}
int printf_L()
{
    int j;
    for(j=0;j<L.last;j++)
    {
    printf("%d ",L.date[j]);
    }
    printf("%d\n",L.date[L.last]);
}

int main()
{
    int i,n;
    char m1[10];
    init_L();
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
    scanf("%s",m1);
    if(strcmp(m1,"ins")==0)
    {
         insert_L();
    }
        if(strcmp(m1,"del")==0)
        {
          delete_L();
        }
    if(strcmp(m1,"show")==0)
        {
            printf_L();
        }
    }
}


[ 本帖最后由 zhao72349947 于 2013-3-13 17:52 编辑 ]
搜索更多相关主题的帖子: 测试 线性表 color 
2013-03-13 09:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
看看

授人以渔,不授人以鱼。
2013-03-13 10:39
小菜B
Rank: 2
等 级:论坛游民
帖 子:29
专家分:25
注 册:2013-3-6
收藏
得分:2 
还是说题目是什么把,不然我真看不懂这程序
2013-03-13 10:40
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:2 
哇,光看提示吗,如此的清晰...数组越界嘛

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-13 10:42
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:4 
错误    6    error C4716: “init_L”: 必须返回一个值    e:\test\testboost\testboost\test.cpp    14
错误    7    error C4716: “delete_L”: 必须返回一个值    e:\test\testboost\testboost\test.cpp    47
错误    8    error C4716: “printf_L”: 必须返回一个值    e:\test\testboost\testboost\test.cpp    56

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-13 10:46
小菜B
Rank: 2
等 级:论坛游民
帖 子:29
专家分:25
注 册:2013-3-6
收藏
得分:5 
改了一下,能运行了。只是不知道这个程序干嘛的
#include<stdio.h>
#include<string.h>
 #define MAXSIZE 100
 struct sqllist
 {
        int date[MAXSIZE];
        int last;
 };
 struct sqllist L;
 
void init_L()
 {
    L.last=-1;
 }
 
int insert_L()
 {
     int i,x,j;
     scanf("%d%d",&i,&x);
     if(L.last>=MAXSIZE)
     {
     printf("表满!\n");
     return 0;
     }
     if(i<1||i>(L.last+2))
     {
     printf("i的值不对!\n");
      return 0;
     }
     for(j=L.last;j>=i-1;j--)
     {
     L.date[j+1]=L.date[j];
     }
     L.date[i-1]=x;
     L.last++;
     return 1;
 }
 
void delete_L()
 {
     int n,m,i,j;
     i=L.last;
      scanf("%d",&n);
      for(j=n;j<=i;j++)
         L.date[j-1]=L.date[j];
           L.last=L.last-1;
 }
 void printf_L()
 {
     int j;
     for(j=0;j<L.last;j++)
     {
     printf("%d ",L.date[j]);
     }
     printf("%d\n",L.date[L.last]);
 }
 
int main()
 {
     int i,n;
     char m1[10];
     init_L();
     scanf("%d",&n);
     for(i=1;i<=n;i++)
     {
     scanf("%s",m1);
     if(strcmp(m1,"ins")==0)
     {
          insert_L();
     }
         if(strcmp(m1,"del")==0)
         {
           delete_L();
         }
     if(strcmp(m1,"show")==0)
         {
             printf_L();
         }
     }
}
2013-03-13 10:49
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:5 
以下是引用小菜B在2013-3-13 10:49:56的发言:

改了一下,能运行了。只是不知道这个程序干嘛的
#include<stdio.h>
#include<string.h>
 #define MAXSIZE 100
 struct sqllist
 {
        int date[MAXSIZE];
        int last;
 };
 struct sqllist L;
 
void init_L()
 {
    L.last=-1;
 }
 
int insert_L()
 {
     int i,x,j;
     scanf("%d%d",&i,&x);
     if(L.last>=MAXSIZE)
     {
     printf("表满!\n");
     return 0;
     }
     if(i<1||i>(L.last+2))
     {
     printf("i的值不对!\n");
      return 0;
     }
     for(j=L.last;j>=i-1;j--)
     {
     L.date[j+1]=L.date[j];
     }
     L.date=x;
     L.last++;
     return 1;
 }
 
void delete_L()
 {
     int n,m,i,j;
     i=L.last;
      scanf("%d",&n);
      for(j=n;j<=i;j++)
         L.date[j-1]=L.date[j];
           L.last=L.last-1;
 }
 void printf_L()
 {
     int j;
     for(j=0;j<L.last;j++)
     {
     printf("%d ",L.date[j]);
     }
     printf("%d\n",L.date[L.last]);
 }
 
int main()
 {
     int i,n;
     char m1[10];
     init_L();
     scanf("%d",&n);
     for(i=1;i<=n;i++)
     {
     scanf("%s",m1);
     if(strcmp(m1,"ins")==0)
     {
          insert_L();
     }
         if(strcmp(m1,"del")==0)
         {
           delete_L();
         }
     if(strcmp(m1,"show")==0)
         {
             printf_L();
         }
     }
}


我也刚刚改得编译过了
运行出来一个黑屏
敲了半天也不知道是干嘛的
不玩了,继续改项目BUG去...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-03-13 10:51
zhao72349947
Rank: 1
来 自:成都东软学院
等 级:新手上路
帖 子:60
专家分:5
注 册:2012-10-20
收藏
得分:0 
程序代码:
#include<stdio.h>
#include<string.h>
#define MAXSIZE 100000
struct sqllist
{
       int date[MAXSIZE];
       int last;
};
struct sqllist L;
void ins_L()
{
    int i,x,j;
    scanf("%d%d",&i,&x);
    for(j=L.last;j>=i-1;j--)
    {
        L.date[j+1]=L.date[j];
    }
    L.date[i-1]=x;
    L.last++;
}
void del_L()

 {
     int n,i,j;
     i=L.last;
      scanf("%d",&n);
      for(j=n;j<=i;j++)
         L.date[j-1]=L.date[j];
      L.last=L.last-1;

 }


void show_L()
{
    int j;
    for(j=0;j<L.last;j++)
    {
        printf("%d ",L.date[j]);
    }
     printf("%d\n",L.date[L.last]);
}
int main()
{
    long int n;
    while(scanf("%ld",&n)!=EOF){
    char m[4];
     L.last=-1;
     while(n>0)
    {
        scanf("%s",m);
         if(strcmp(m,"ins")==0)
        {
             ins_L();
        }
        if(strcmp(m,"del")==0)
        {
            del_L();
        }
        if(strcmp(m,"show")==0)
        {
            show_L();
        }
        n--;
    }
    }
    return 0;
}
2013-03-13 17:51
快速回复:自己苦想终于解决了::大家帮我看看错在哪里了,题目也贴出了,Segme ...
数据加载中...
 
   



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

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