| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 606 人关注过本帖
标题:数据结构问题!!!
只看楼主 加入收藏
zgxxidian
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2009-8-30
结帖率:25%
收藏
 问题点数:0 回复次数:4 
数据结构问题!!!
最近学数据结构。第一次写了个程序可是发现语法错误很多,自己找了半天还是有好多,逻辑上应该没什么问题吧,好像就是一些C的语法点错了,请高手帮忙改改好不?改动的地方用红字标下,谢谢大家!


/*若s是一个采用顺序结构存储的串,编写一个函数,要求从s中删除从第i个字符开始的,长度为j的一个字串*/
#include<stdio.h>
#include<malloc.h>
#define maxsize 1024;


seqstring *DELETE(seqstring *s,int i,int j);


void main()
{
    typedef struct
    {char ch[maxsize];
     int len ;
    }seqstring;
    seqstring *a;    /*顺序串*/

    a->ch[maxsize]={f,g,h,i,j,k,l,v,b,s};
    int b=3,c=3,n=0,len;
    len=10;
    DELETE(a,b,c);
for(n=1;n<=len-c;n++)
{
    printf("%c",a);
    a++;
}

}
seqstring *DELETE(seqstring *s,int i,int j)
{
    int m;
    if(i+j>len)        /*给出的i,j值越界*/
        printf("error");
    else
    {
        for(k=0;k<len-(i+j)+1;k++)
            s->ch[i+k]=s->ch[i+j+k];/*从第i+j位开始,后面的整体前移j位*/
        for(k=0;k<j;k++)
            s->ch[len-j+1]='0';    /*结束标志'/0'前移j位*/
    }
    return(s);
}



 

搜索更多相关主题的帖子: 数据结构 
2010-04-18 23:12
hanzhenddd
Rank: 5Rank: 5
等 级:职业侠客
帖 子:90
专家分:361
注 册:2010-3-4
收藏
得分:0 
#define maxsize 1024;
 
 
seqstring *DELETE(seqstring *s,int i,int j);
 
 
void main()
{
    typedef struct
    {char ch[maxsize];
     int len ;
    }seqstring;
    seqstring *a;    /*顺序串*/
 
    a->ch[maxsize]={f,g,h,i,j,k,l,v,b,s};
    int b=3,c=3,n=0,len;   这个len 和 结构体中的len 重复定义了 建议更换 或者不用
    len=10;
    DELETE(a,b,c);
for(n=1;n<=len-c;n++)     下面这个输出也是错误的,我纳闷了 能打印出来么?a 是什么你知道么?
{
    printf("%c",a);
    a++;
}
 
}
seqstring *DELETE(seqstring *s,int i,int j)
{
    int m;
    if(i+j>len)        /*给出的i,j值越界*/    len从哪里来?
        printf("error");
    else
    {
        for(k=0;k<len-(i+j)+1;k++)         长度是5的话? 删除第四位 长度为1  那么 len-(i+j)就不成立了
            s->ch[i+k]=s->ch[i+j+k];/*从第i+j位开始,后面的整体前移j位*/
        for(k=0;k<j;k++)                   长度是5的话? 删除第四位 长度为1,那么你想想结果会变成什么样?
            s->ch[len-j+1]='0';    /*结束标志'/0'前移j位*/
    }
    return(s);
}
                你这个程序能实现? 删除数组数据吗???好好思考下!缺点什么
不找了。。。你还得多编程。。基本的功练好再去结构体。。而且你这个程序都没有上升到数据结构..。。仅仅是结构体而已!~




[ 本帖最后由 hanzhenddd 于 2010-4-19 00:33 编辑 ]
2010-04-19 00:22
Alar30
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:10
帖 子:988
专家分:1627
注 册:2009-9-8
收藏
得分:0 
俺来学习LS的点评
2010-04-19 08:42
zgxxidian
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2009-8-30
收藏
得分:0 
回复 2楼 hanzhenddd
非常感谢你,我会好好研究研究的。确实是编程的基本功太差了
2010-04-19 12:26
zgxxidian
Rank: 1
等 级:新手上路
帖 子:15
专家分:4
注 册:2009-8-30
收藏
得分:0 
回复 2楼 hanzhenddd
  是不是在main函数中定义一个顺序串的结构体serstring,其中含有char型的数组ch[maxsize],用来存放字符,还有数组的长度len。然后用一个指向这个结构体的指针a。给ch赋值,并给出b,c值,表示删除第b个字符开始连续c个字符。
  此外,定义一个删除ch中从第i个元素开始的j个元素的函数DELETE,它的返回值应该是seqstring型的指针,所以函数体写成seqstring *DELETE(serstring *s,int i,int j)。这样当调用DELETE函数时,a的地址值传给s,b传给i,c传给j。然后在s->ch中进行操作,结束后将指针s返回,这样就可以得到DELETE后的ch了。。大概是不是这个思想啊?就是注意实参与形参用的符号不能一样是吧?
  谢谢了,希望大家帮帮忙,这些基本的问题解决了,就好办了
2010-04-19 12:47
快速回复:数据结构问题!!!
数据加载中...
 
   



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

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