顺序表数据删除问题求助
#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这个数组里面吗?不是还占有一个位置吗?怎么样才能真正的删除掉?求帮助,谢谢..