| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 953 人关注过本帖
标题:快来帮我看看这个线性表啊,花了近2个小时就是出不来我想要的结果(求详解) ...
只看楼主 加入收藏
liuguanglei
Rank: 2
等 级:论坛游民
帖 子:41
专家分:26
注 册:2012-8-15
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:17 
快来帮我看看这个线性表啊,花了近2个小时就是出不来我想要的结果(求详解)
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define listincrement 10
typedef int Elemtype;
typedef struct
{
    Elemtype  *elem;
    int length;
    int listsize;
}Sqlist;
//进行空表的创建
 InitList(Sqlist L)
{
       L.elem=(Elemtype * )malloc(LIST_INIT_SIZE * sizeof(Elemtype));
     if(!L.elem)
     return 0;
     L.length=0;
     L.listsize=LIST_INIT_SIZE;
     return 1;
}
 //在表中插入元素x
 ListInsert(Sqlist L,int i,Elemtype x)
{
     int j;
    if(i<0||i>L.length)
        return 0;
    for(j=L.length-1;j<=i+1;j--)
        L.elem[j+1]=L.elem[j];
        L.elem[i+1]=x;
        L.length++;
        return 1;
}
 //删除表中第I个位置上的元素
 ListDelete(Sqlist L,int i)
{
    int j;
    for(j=i+1;j<L.length-1;j++)
        L.elem[j-1]=L.elem[j];
    L.length--;
    return 1;
}
int main()
{
    Sqlist L;
    int k;
    int j;
    int i;
    InitList(L);
    printf("please input 9 numbers:");
    for(i=0;i<9;i++)
    scanf("%d",&L.elem[i]);
    for(i=0;j<L.length;i++)
    printf("%4d",L.elem[i]);
    printf("请输入要删除的元素的位置k:");
    scanf("%d",&k);
    ListDelete(L,k);
    printf("删除后的序列:\n");
    for(i=0;j<L.length;i++)
    printf("%4d",L.elem[i]);
    printf("\n");
}
搜索更多相关主题的帖子: 元素 return include 线性表 
2012-11-01 16:55
青春无限
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江苏
等 级:贵宾
威 望:24
帖 子:3452
专家分:19340
注 册:2012-3-31
收藏
得分:4 
先看看

学 会看代码…学习写程序…学会搞开发…我的目标!呵呵是不是说大话啊!!一切皆可能
2012-11-01 17:48
星闪夜空
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:50
专家分:119
注 册:2012-9-15
收藏
得分:4 
回复 楼主 liuguanglei
指出你两个问题:
 一:你通过Sqlist L定义一个结点,然后通过InitList(L)将L传到InitList函数进行处理,你这里是传值而不是传址!!!  
 二:在InitList(Sqlist L)函数中,你只是将结点中的指针分配内存空间,并不是给这个结点分配内存空间.
 
2012-11-01 18:30
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:4 
你先看看倒数第三行有没有问题。。。
2012-11-01 18:39
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
你貌似插入的那个函数没有用上呀
下面的程序你看看吧。。。
注意 & (取地址)。。

#include<stdio.h>
 #include<stdlib.h>
 #define LIST_INIT_SIZE 100
 #define listincrement 10
 typedef int Elemtype;
 typedef struct
 {
     Elemtype  *elem;
     int length;
     int listsize;
 }Sqlist;
 //进行空表的创建
int  InitList(Sqlist &L)
 {
        L.elem=(Elemtype * )malloc(LIST_INIT_SIZE * sizeof(Elemtype));
      if(!L.elem)
      return 0;
      L.length=0;
      L.listsize=LIST_INIT_SIZE;
      return 1;
 }
 //在表中插入元素x
/*  int  ListInsert(Sqlist &L,int i,Elemtype x)
 {
      int j;
     if(i<0||i>L.length)
         return 0;
     for(j=L.length-1;j<=i+1;j--)
         L.elem[j+1]=L.elem[j];
         L.elem[i+1]=x;
         L.length++;
         return 1;
 }*/
 //删除表中第I个位置上的元素
   int ListDelete(Sqlist &L,int i)
 {
     int j;
     for(j=i;j<=L.length-1;j++)
         L.elem[j-1]=L.elem[j];
         L.length--;
     return 1;
 }
  main()
 {
     Sqlist L;
     int k;
     int j;
     int i;
     InitList(L);
     printf("please input 9 numbers:\n");
     for(i=0;i<9;i++)
     scanf("%d",&L.elem[i]);
      L.length=9 ;
      printf("请输入要删除的元素的位置k:\n");
     scanf("%d",&k);
     ListDelete(L,k);
     printf("删除后的序列:\n");
     for(i=0;i<L.length;i++)
     printf("%4d",L.elem[i]);
     printf("\n");
 }
2012-11-01 18:41
liuguanglei
Rank: 2
等 级:论坛游民
帖 子:41
专家分:26
注 册:2012-8-15
收藏
得分:0 
回复 5楼 凌云飞翔
运行还是不出结构啊,但是不报错,郁闷啊
2012-11-01 22:18
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:4 
建议LZ将错误说明白些许....
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define listincrement 10
typedef int Elemtype;
typedef struct
{
     Elemtype  *elem;
     int length;
     int listsize;
}Sqlist;
//进行空表的创建
int  InitList(Sqlist &L)//这里是引用...在c里面是没有引用的,LZ可以考虑用指针int  InitList(Sqlist *L)。。。。下同
{
        L.elem=(Elemtype * )malloc(LIST_INIT_SIZE * sizeof(Elemtype));
      if(!L.elem)
      return 0;
      L.length=0;
      L.listsize=LIST_INIT_SIZE;
      return 1;
}
//在表中插入元素x 
/*  int  ListInsert(Sqlist &L,int i,Elemtype x)
{
      int j;
     if(i<0||i>L.length)
         return 0;
     for(j=L.length-1;j<=i+1;j--)
         L.elem[j+1]=L.elem[j];
         L.elem[i+1]=x;
         L.length++;
         return 1;
}*/
//删除表中第I个位置上的元素
   int ListDelete(Sqlist &L,int i)
{
     int j;
     for(j=i;j<=L.length-1;j++)
         L.elem[j-1]=L.elem[j];
         L.length--;
     return 1;
}
  main()
{
     Sqlist L;
     int k;
     int j;
     int i;
     InitList(L);//按照指针的话就得传如地址InitList(&L);
     printf("please input 9 numbers:\n");
     for(i=0;i<9;i++)
     scanf("%d",&L.elem[i]);
      L.length=9 ;
      printf("请输入要删除的元素的位置k:\n");
     scanf("%d",&k);
     ListDelete(L,k);
     printf("删除后的序列:\n");
     for(i=0;i<L.length;i++)
     printf("%4d",L.elem[i]);
     printf("\n");
}
2012-11-01 22:33
liuguanglei
Rank: 2
等 级:论坛游民
帖 子:41
专家分:26
注 册:2012-8-15
收藏
得分:0 
回复 7楼 爱闹的娃
在函数的传值过程中这个形参可以不用指针啊,可以实参和形参直接进行值与值的传递
2012-11-01 22:42
liuguanglei
Rank: 2
等 级:论坛游民
帖 子:41
专家分:26
注 册:2012-8-15
收藏
得分:0 
回复 7楼 爱闹的娃
用VC6.0DOS窗口老蹦亏,就是顺序表的操作为什么就这么难啊
2012-11-01 22:46
凌云飞翔
Rank: 5Rank: 5
来 自:河北
等 级:职业侠客
威 望:6
帖 子:98
专家分:388
注 册:2012-4-7
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2012-11-01 23:11
快速回复:快来帮我看看这个线性表啊,花了近2个小时就是出不来我想要的结果(求 ...
数据加载中...
 
   



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

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