顺序表操作算法实现

     看来以前的想法很傻很傻,约瑟夫循环还有一段时间,还是先从顺序表开始。

    昨天下午在图书馆从3点到9点,终于扣出来严蔚敏数据结构算法2.1,出来时候接近瘫痪,今早醒来惊奇发现,再去实现算法是那么简单。老话讲得对,敲代码才是硬道理。

    简单记录一下今天收获。准备工作:

    开始main函数实现:初始化空表La,插入若干元素,不妨假定7个,开始删除操作:

完善之后运行又崩溃,看来又是指针惹的祸。偶然发现编译器报warning错:local variable 'e' used without having been initialized.说是偶然发现,实际上因为VC的编译器有个毛病,只要编译下来没错误,即使你有警告,最后都显示0 error(s), 0 warning(s).而那个最底下输出栏窄得只能容纳这短短几行字,于是瞄一眼,自然觉得没问题,万万没想到,致命的Bug在编译的时候已经产生了,所以以后一定要重视Warning的错。而这个错恰巧在死锁的时候发现的,看来令人崩溃的死锁也有有用的一面。接着上文说道,指针定义没有初始化,确实,int *e仅仅分配了空间,却没指向明确的对象,没错,指针悬垂!知道问题所在就好办了,改代码如下:

OK,问题解决!

    之后觉得可以综合成查找的程序,用LocateElem就可以实现。做成之后添加删除功能,再次运行,查找没问题,接下来回车后删除功能的部分自动结束,惊奇地发现若将ElemType改成int类型则不存在这个问题。自动结束?我并没有下命令,仅仅回车了一下……对了,回车,字符,OK,getchar!加上此函数,运行,搞定。

    最后添加人机交互功能,由于getchar的原因,只能花点篇幅用while循环,于是顺序表几个基础操作成功close。

    总结了一下,函数指针熟悉了不少,另外对指针又有了新的看法,它就是一寄生虫,一旦寄生到你身上,就完全被它控制,它操纵了寄主的所有行为,即取代了寄主,进而改变寄主的所有特征。最后就是基础算法的问题,看起来简单,实现起来很艰难,可是一旦练熟了,往前走起来又渐渐变得明朗。这时候就尝到了点甜头。天天说敲代码,敲的是什么,就是这些基础操作,把这些算法包装好,以后的操作直接拿来用,而前提是对这些算法烂熟于心,练到炉火纯青的地步,而这正是我现在的工作。似乎MFC就是实现了这些基础类的封装,想到MFC,又想到C++,Windows,学好数据结构,一切都触手可及!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值