关于数据结构中顺序表的长度length的问题(C语言的)

gdutqiang 2011-06-25 05:46:31
线性表通常首先要使用
void InitList(SeqList *L)    
/*将线性表初始化为空的线性表只需要把线性表的长度length置为0*/
{
L->length=0; /*把线性表的长度置为0*/
}


如果要插入几个数字,可以调用
int InsertList(SeqList *L,int i,DataType e) /*在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0*/
{
实现插入数据的作用,代码省略
}

请问如果在程序中首先调用void InitList 接着调用int InsertList()(比如完成插入2数,这时,list[0]=5,list[1]=9),但是如果在程序中再次调用void InitList,这时候length为0,但是实际上list[0]和list[1]是有数字的呀,也就是并没有把线性表初始化为空
请问各位朋友对此有什么看法呢?
能不能说有数据后的线性表是不能恢复到刚开始的状况的呢?(比如刚开始的时候线性表是没有数字的)
...全文
2613 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
东莞某某某 2011-06-26
  • 打赏
  • 举报
回复
void InitList(SeqList *L)
/*将线性表初始化为空的线性表只需要把线性表的长度length置为0*/
{
//先释放节点
L->length=0; /*把线性表的长度置为0*/
}



想要初始化为空,那你还要释放节点内存
liutengfeigo 2011-06-26
  • 打赏
  • 举报
回复
陶大妈说这书是《低质量C/C++编程》,所以我就没去买了。
AnYidan 2011-06-25
  • 打赏
  • 举报
回复 1
不知 lz 要表示什么,你强制执行 L->length=0,并不代表函数会帮你将内存中原有的数值清灵

当你用malloc 分配一块内存,着内存中的值多是以前留下的

当你 free 一块内存, 你也没有将其中的数值都清零
ryfdizuo 2011-06-25
  • 打赏
  • 举报
回复
lz 老问题了。函数传参方式:传值拷贝
要修改指针需要传指针的地址,即二级指针。
看一下林锐的《高质量C/C++编程》
ljhhh0123 2011-06-25
  • 打赏
  • 举报
回复
C语言的一条设计准则是:作者知道自己在做什么。
就是说,都依赖你自己。
如果库是别人写的,你就要用好它的规则,如果是自己写的,就写到直到实现自己的意图。
InitList是在你新建表时使用的,不可乱用。
如果想恢复到刚开始的样子,那就得删除此表,再重建一个。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧