| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 607 人关注过本帖
标题:删除线性表中所有小于小于x的元素,我不知道我的代码哪里错,帮忙改改好吗? ...
只看楼主 加入收藏
支风儿
Rank: 2
等 级:论坛游民
帖 子:25
专家分:13
注 册:2013-4-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
删除线性表中所有小于小于x的元素,我不知道我的代码哪里错,帮忙改改好吗?
#include<stdio.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT  10
#define ERROR 0
#define OK   1
#define ElemType int

typedef struct
{
    ElemType *elem;
    int length;
    int listsize;
}Sqlist;

int InitList_Sq(Sqlist &L)   //构造线性表
{   int n,i;
   scanf("%d",&n);
    L.elem=(ElemType*)malloc(n*sizeof(ElemType));
    if(!L.elem)
      return ERROR;
    L.length=0;
    L.listsize=n;
    for(i=0;i<n;i++)
    {scanf("%d",&L.elem[i]);
    L.length++;}
    return OK;
}
int ListDelete_Sq1(Sqlist &L,int i,ElemType &e)   //删除第I个元素,用E返回其值
{
    ElemType *q,*p;
    if(i<1||(i>L.length))
    return ERROR;
    p=&(L.elem[i-1]);
    e=*p;
    q=L.elem+L.length+1;
    for(++p;p<=q;++p)
    *(p-1)=*p;
    --L.length;
    return OK;
}

int ListDelete_Sq2(Sqlist &L,ElemType &e)
{   int i;

    for(i=0;i<L.length;i++)
    {
        if(L.elem[i]<e)
        {
            ListDelete_Sq1(L,i,e);
            L.length--;
        }
    }
    return OK;

}


int ListLoad_Sq(Sqlist &L)
{
    int i;
    for(i=0;i<L.length;i++)
    printf("%d ",L.elem[i]);
    return OK;
}

int main(void)
{
    Sqlist L;
    int x;
    InitList_Sq(L);
    ListLoad_Sq(L);
    scanf("%d",&x);
    ListDelete_Sq2(L,x);
    ListLoad_Sq(L);
    return OK;
}
搜索更多相关主题的帖子: 元素 include return 线性表 
2013-05-02 12:37
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:20 
int InitList_Sq(Sqlist &L)   //构造线性表
{   int n,i;
   scanf("%d",&n);
    L.elem=(ElemType*)malloc(n*sizeof(ElemType));
    if(!L.elem)
      return ERROR;
    L.length=0;
    L.listsize=n;
    for(i=0;i<n;i++)
    {scanf("%d",&L.elem[i]);
    L.length++;}
    return OK;
}
int ListDelete_Sq1(Sqlist &L,int i,ElemType &e)   //删除第I个元素,用E返回其值
{
    ElemType *q,*p;
    if(i<1||(i>L.length))
    return ERROR;
    p=&(L.elem[i-1]);
    e=*p;
    q=L.elem+L.length+1;
    for(++p;p<=q;++p)
    *(p-1)=*p;
    --L.length;
    return OK;
}
问题就处在这里的处理,你的长度在减少两个函数中都减少,还有就是i在增加,然后你用数组下标去标注,肯定会出现i比长度还大的

Maybe
2013-05-02 15:22
支风儿
Rank: 2
等 级:论坛游民
帖 子:25
专家分:13
注 册:2013-4-6
收藏
得分:0 
回复 2楼 邓士林
谢谢你的指导,我改过来了哈。。。谢谢
2013-05-02 23:44
快速回复:删除线性表中所有小于小于x的元素,我不知道我的代码哪里错,帮忙改改 ...
数据加载中...
 
   



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

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