| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 411 人关注过本帖
标题:顺序表数据删除问题求助
取消只看楼主 加入收藏
on1y_rL
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-10-3
结帖率:100%
收藏
已结贴  问题点数:8 回复次数:1 
顺序表数据删除问题求助
#include <stdio.h>
#include <string.h>
#define MAXSIZE 100  //定义线性表的最大长度

typedef struct    //定义顺序表结构
{
    DATA ListData[MAXSIZE+1]; //保存顺序表的数组
    int ListLen;              //顺序表已存结点 的数量
}SeqListType;
int SeqListDelete(SeqListType *SL,int n)  //删除顺序表中的数据元素
{
    int i;
    if(n<1 || n>SL->ListLen+1)  //删除元素序号不正确
    {
        printf("删除结点序号错误,不能删除结点!\n");
        return 0;              //返回0,表示删除不成功
    }
    for(i=n;i<SL->ListLen;i++)  //将顺序表中的数据向前移动
        SL->ListData[i]=SL->ListData[i+1];
    SL->ListLen--;               //顺序表元素数量减1
    return 1;                   //返回成功删除  
}
这个是我看的一本书上的代码,我想不明白if(n<1 || n>SL->ListLen+1) 这个不应该是if(n<1 || n>SL->ListLen) 吗?还有就是,假如删除的是最后一个元素的话,那就进不了for(i=n;i<SL->ListLen;i++)  这个循环了。但SL->ListLen--长度减1了,但其实最后一个元素不是还在SL->ListData这个数组里面吗?不是还占有一个位置吗?怎么样才能真正的删除掉?求帮助,谢谢..
搜索更多相关主题的帖子: 元素 return include 线性表 
2012-10-11 23:34
on1y_rL
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-10-3
收藏
得分:0 
回复 2楼 爱闹的娃
ListData[MAXSIZE+1]这个的确是+1了,假设它没+1,从0开始,那它最后的一个元素不是ListData[ListLen-1]吗?
那它+1了,这样最后一个元素应该是在ListData[ListLen]吧?初始化的时候ListLen=0。
2012-10-12 13:55
快速回复:顺序表数据删除问题求助
数据加载中...
 
   



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

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