| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 519 人关注过本帖
标题:线性表的顺序储存源代码的改错
只看楼主 加入收藏
gdbdx2
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-7-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
线性表的顺序储存源代码的改错
编译出4个错,怎么改,本人新手,这是关于线性表的顺序储存
#include<stdio.h>
#include <stdlib.h>
#define Listinitsize 100
#define Listincrement 10
typedef struct {
    int *elem;
    int length;
    int listsize;
}Sqlist;

int InsertSList(Sqlist *L,int n,int i,int x);
int DeleteSList(Sqlist *L,int n,int i);

main()
{
    int i,n,m,x;
    Sqlist L;
    printf("请输入线性表的表长:");
    scanf("%d",&n);
    printf("\n");
    printf("the list element is:");
    for(i=0;i<n;i++)
    scanf("%d",&i);
    printf("请选择\n1:插入元素操作\n2:删除元素操作");
    scanf("%d",&m);
switch(m)
{
case 1:{
    printf("i=,x=:");
    scanf("%d,%d",&i,&x);
    InsertSList(Sqlist *L,int i,int n,int x);
}
break;
case 2:{
    printf("i=:");
    scanf("%d",&i);
    int DeleteSList(Sqlist *L,int i,int n);
       }
    break;
default:
    printf("ERROR");
}

int DeleteSList(Sqlist *L,int i,int n)//在长度为n的L线性表删除第i个元素
{
int j,y;
if(i<1||i>n+1)
{
    printf("ERROR");
    return 0;
}
else
{
    y=L[i];
    for(j=i+1;j<n;j++)
    {
        L[j]=L[j+1];
    }
          n=n-1;
        return 1;
}
int InsertSList(Sqlist *L,int i,int n,int x)//在长度为n的L线性表的第i个元素之前插入
{
int j;
if(i<1||i>n+1)
{
    printf("ERROR");
    return 0;
}
else
{
    for(j=n;j<n;j--)
    {
        L[j+1]=L[j];
    }
        L[i]=x;
        n=n+1;
        return 1;
}
搜索更多相关主题的帖子: element include 源代码 线性表 
2011-07-17 12:15
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:20 
回复 楼主 gdbdx2
#include<stdio.h>
#include <stdlib.h>
#define Listinitsize 100
#define Listincrement 10
typedef struct {
    int *elem;
    int length;
    int listsize;
}Sqlist;
int InsertSList(Sqlist *L,int i,int n,int x);      //这里貌似顺序反了,你看下原来的
int DeleteSList(Sqlist *L,int n,int i);
void main()                  //这的写上主函数返回的类型
{
    int i,n,m,x;
    Sqlist *L;
    printf("请输入线性表的表长:");
    scanf("%d",&n);
    printf("\n");
    printf("the list element is:");
    for(i=0;i<n;i++)
    scanf("%d",&i);
    printf("请选择\n1:插入元素操作\n2:删除元素操作");
    scanf("%d",&m);
switch(m)
{
case 1:{
    printf("i=,x=:");
    scanf("%d,%d",&i,&x);
    InsertSList(L,i,n,x);                 //这里好像也不能加变量类型
       }
break;
case 2:{
    printf("i=:");
    scanf("%d",&i);
    int DeleteSList(Sqlist *L,int i,int n);
       }
    break;
default:
    printf("ERROR");
}
}                           //这也少写了个花括号
int DeleteSList(Sqlist *L,int i,int n)//在长度为n的L线性表删除第i个元素
{
    int j,y;
    if(i<1||i>n+1)
    {
       printf("ERROR");
       return 0;
    }
    else
    {
         y=L->listsize;                       //你这申请的是结构体指针不应该这么用
         for(j=i+1;j<n;j++)
        {
            L[j]=L[j+1];            //同样这也是
        }
          n=n-1;
        return 1;
    }
}                      //这也没写花括号
int InsertSList(Sqlist *L,int i,int n,int x)//在长度为n的L线性表的第i个元素之前插入
{
    int j;
    if(i<1||i>n+1)
    {
        printf("ERROR");
        return 0;
    }
    else
    {
      for(j=n;j<n;j--)
      {
          L[j+1]=L[j];
      }
         L[i]=x;
         n=n+1;
         return 1;
    }
}
总的来说你的好像是从书上超的或者是网上复制的,绝对不是你自己写的,还有,养成良好的编程习惯,注意自己的排版,还有概念没有理解透彻,需要再看看c再来看数据结构

菜鸟一名,准备起飞
2011-07-21 13:05
gdbdx2
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-7-17
收藏
得分:0 
回复 2楼 小菜小C
这是对以个网上基础程序改写的,你说的对,我在C语言后面的指针和结构体学不熟练,谢谢提醒
2011-07-22 11:26
gdbdx2
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-7-17
收藏
得分:0 
回复 2楼 小菜小C
#include<stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
    int *elem;
    int length;
    int listsize;
}Sqlist;
int InitSList(Sqlist &L);
int InsertSList(Sqlist *L,int i,int n,int x);
int DeleteSList(Sqlist *L,int n,int i);
void main()                  
{
    int i,n,m,x;
    Sqlist *L;
    InitSList(SqList &L);
    printf("请输入线性表的表长:");
    scanf("%d",&n);
    printf("\n");
    printf("线性表的元素分别为:\n");
    for(i=0;i<=n;i++)
    scanf("%d",&i);
    printf("请选择\n1:插入元素操作\n2:删除元素操作\n");
    scanf("%d",&m);
switch(m)
{
case 1:{
    printf("请输入插入元素的位置:");
    scanf("%d",&i);
    printf("请输入插入元素:");
    scanf("%d",&x);
    int InsertSList(Sqlist *L,int i,int n,int x);
    printf("线性表的元素分别为:\n");
    for(i=0;i<=n;i++)
        printf("%d",L->listsize);
       }
break;
case 2:{
    printf("请输入删除元素的位置:");
    scanf("%d",&i);
    int DeleteSList(Sqlist *L,int i,int n);
    printf("线性表的元素分别为:\n");
    for(i=0;i<=n;i++)
        printf("%d",L->listsize);
       }
    break;
default:
    printf("ERROR");
}
}
int InitSList(SqList &L)
{
    L->elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int));
    if(!L->elem) exit(OVERFLOW);
    L->length = 0;
    L->listsize = LIST_INIT_SIZE;
    return 1;
}
                           
int DeleteSList(Sqlist *L,int i,int n)//在长度为n的L线性表删除第i个元素
{
    int j,y;
    if(i<1||i>n+1)
    {
       printf("ERROR");
       return 0;
    }
    else
    {
         y=L->listsize;                       
         for(j=i+1;j<n;j++)
        {
            L[j]=L[j+1];            
        }
          --L->length;
        return 1;
    }
}
int InsertSList(Sqlist *L,int i,int n,int x)//在长度为n的L线性表的第i个元素之前插入
{
    int j;
    if(i<1||i>n+1)
    {
        printf("ERROR");
        return 0;
    }
    else
    {
      for(j=n;j<n;j--)
      {
          L[j+1]=L[j];
      }
         L->listsize=x;
         ++L->length;
         return 1;
    }
}
我改了之后为什么初始化不了线性表,在InitSlist(Sqlist &L)出现4个错误
2011-07-22 13:16
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 4楼 gdbdx2
#include<stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef struct {
    int *elem;
    int length;
    int listsize;
}Sqlist;
int InitSList(Sqlist &L);
int InsertSList(Sqlist *L,int i,int n,int x);
int DeleteSList(Sqlist *L,int n,int i);
void main()                  
{
    int i,n,m,x;
    Sqlist *L;
    InitSList(L);                 //你这定义的是小写的l不是L,注意一下,还有你申请的本来就是结构体指针,传的时候传错了,看看一级指针和二级指针
                                           //还有//传参的时候不需要把类型写进去
    printf("请输入线性表的表长:");
    scanf("%d",&n);
    printf("\n");
    printf("线性表的元素分别为:\n");
    for(i=0;i<=n;i++)
    scanf("%d",&i);
    printf("请选择\n1:插入元素操作\n2:删除元素操作\n");
    scanf("%d",&m);
switch(m)
{
case 1:{
    printf("请输入插入元素的位置:");
    scanf("%d",&i);
    printf("请输入插入元素:");
    scanf("%d",&x);
    int InsertSList(Sqlist *L,int i,int n,int x);
    printf("线性表的元素分别为:\n");
    for(i=0;i<=n;i++)
        printf("%d",L->listsize);
       }
break;
case 2:{
    printf("请输入删除元素的位置:");
    scanf("%d",&i);
    int DeleteSList(Sqlist *L,int i,int n);
    printf("线性表的元素分别为:\n");
    for(i=0;i<=n;i++)
        printf("%d",L->listsize);
       }
    break;
default:
    printf("ERROR");
}
}
int InitSList(Sqlist L)               //看看函数之间参数的传递,注意一下
{
    L->elem = (int *)malloc(LIST_INIT_SIZE * sizeof(int));         //这里构造的话不行,必须使用二级指针,
    if(!L->elem) exit(OVERFLOW);
    L->length = 0;
    L->listsize = LIST_INIT_SIZE;
    return 1;
}
                           
int DeleteSList(Sqlist *L,int i,int n)//在长度为n的L线性表删除第i个元素
{
    int j,y;
    if(i<1||i>n+1)
    {
       printf("ERROR");
       return 0;
    }
    else
    {
         y=L->listsize;                       
         for(j=i+1;j<n;j++)
        {
            L[j]=L[j+1];            
        }
          --L->length;
        return 1;
    }
}
int InsertSList(Sqlist *L,int i,int n,int x)//在长度为n的L线性表的第i个元素之前插入
{
    int j;
    if(i<1||i>n+1)
    {
        printf("ERROR");
        return 0;
    }
    else
    {
      for(j=n;j<n;j--)
      {
          L[j+1]=L[j];
      }
         L->listsize=x;
         ++L->length;
         return 1;
    }
}
给你改了一点,但改不下去了,把二级指针的概念搞懂,还有&符号的具体作用和含义,总的来说书上基础的东西不是掌握的不是太牢,多看书吧,多写代码

菜鸟一名,准备起飞
2011-08-09 16:24
小菜小C
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:111
注 册:2011-3-18
收藏
得分:0 
回复 4楼 gdbdx2
初始化不了线性表是因为你的子函数并没有对主函数中的那个值产生影响,没有分清函数与函数之间传递真正的内涵,勤加练习

菜鸟一名,准备起飞
2011-08-09 16:26
gdbdx2
Rank: 1
等 级:新手上路
帖 子:6
专家分:4
注 册:2011-7-17
收藏
得分:0 
谢谢啊,我的基础是不扎实!

2011-08-20 23:52
快速回复:线性表的顺序储存源代码的改错
数据加载中...
 
   



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

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