尊宝国际娱乐APP下载

设为首页收藏本站

编程十万个为什么,属于程序员的编程论坛

 找回密码
 5秒快速注册
QQ登录 只需一步,快速开始
搜索
查看: 21447|回复: 110
打印 上一主题 下一主题

[C/C++每日一练] C/C++贪吃蛇2011/4/29

  [复制链接]
跳转到指定楼层
传说中的楼主
发表于 2011-4-29 11:37:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PStatus"> 本帖最后由 凌云紫冥 于 2011-5-1 09:01 编辑

昨天的题目写出的人很少。 一部分人没学过链表,我说了可以学嘛,这个很快的,先理解,然后尝试着使用,慢慢的掌握它。

我记得当初学习链表的时候就是:因为我当时基础学的不是很好,按照书上的一个链表例子,先看图理解一下到底链表是个什么东西,原来就是一些结点通过一根线连着,这根线就是指针,然后把书上的例子程序敲出来,运行看效果,慢慢理解,然后变换一下添加结点的方式,慢慢的熟悉。

熬过来链表就会用了,从此就打开了数据结构的大门。

一部分说链表会实现,双向链表就不会了,我已经给出了说明以及解释,图都画好了,应该理解不难吧?加一个前驱指针,然后我给出的添加结点方法是很简单的,直接添加的头结点。

今天实现删除最后一个结点,由于我们的贪吃蛇需要不停的移动,也就是添加头结点和删除尾结点的过程来实现这个蛇的移动。
用delete_tail函数来实现,我的head和tail定义为全局变量,所以不需要传参。
由于我们的蛇不可能只有1个结点(初始化为3个结点)或者没有结点。所以这些特殊情况不需要考虑,直接删除最后一个结点即可,非常简单。          C/C++贪吃蛇2011/4/30
游客,如果您要查看本帖隐藏内容请回复



单选投票, 共有 20 人参与投票
您所在的用户组没有投票权限
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 !wechat_share!!wechat_share!
收藏收藏2 转播转播 分享分享4 分享淘帖 顶一个顶一个1 踩一下踩一下

BcWhy版权声明1、本帖可以任何形式转载到任何媒体,但必须带上本贴的URL连接,否则即视为同意支付 1000 元报酬
2、本主题所有言论和图片纯属凌云紫冥个人意见,与本论坛立场无关
3、本主题由该帖子作者凌云紫冥发表,该帖子作者凌云紫冥与本站享有帖子相关版权
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、本站管理员和版主有权不事先通知发贴者而删除本文

!related_be_replied_threads!
令人羡慕的沙发
 楼主| 发表于 2011-4-29 11:59:15 | 只看该作者
369778072 发表于 2011-4-29 11:58
没思路,直接看答案了

能把答案看懂就非常不错了。。
回复 使用道具 举报
冷板凳
 楼主| 发表于 2011-4-29 12:05:00 | 只看该作者
369778072 发表于 2011-4-29 12:03
看不出怎么初始化3个节点。。。

这里就是删除最后一个结点。
我说的初始化是指以后实现贪吃蛇的时候,会给这条蛇初始化3个结点,就像我们以前玩过的一样,一开始就有一定长度了。
回复 使用道具 举报
4
发表于 2011-4-29 12:31:12 | 只看该作者
来看看
回复 使用道具 举报
5
发表于 2011-4-29 12:38:21 | 只看该作者
看答案,,,,,
回复 使用道具 举报
6
发表于 2011-4-29 12:39:46 | 只看该作者
看不明白,
回复 使用道具 举报
7
发表于 2011-4-29 14:58:32 | 只看该作者
  1. SnakeNode tail;

  2. void delete_tail()
  3. {
  4.         assert( NULL != tail);
  5.     Snake *p = tail;
  6.         if( tail == head)
  7.         {
  8.                 head = NULL;
  9.                 tail = NULL;
  10.         }
  11.         else
  12.         {
  13.                 tail = tail->prior;
  14.                 tail->next = NULL;
  15.         }
  16.         delete p;
  17. }
复制代码

点评

不错。  发表于 2011-4-29 17:38
回复 使用道具 举报
8
发表于 2011-4-29 16:21:42 | 只看该作者
void Csnake::dele_tail()
{
        snake *temp;
        temp=tail;
        tail=temp->prior;
        temp->prior=NULL;
        tail->next=NULL;
        delete temp;
}

这样对吗?

点评

对的,非常不错!  发表于 2011-4-29 17:57
回复 使用道具 举报
9
发表于 2011-4-29 16:21:52 | 只看该作者
如果不考虑一个或是空的话直接将尾指针指向上一个就好了吧。我觉得是。
我选E。。。。
回复 使用道具 举报
10
 楼主| 发表于 2011-4-29 17:57:35 | 只看该作者
回复 逗你玩 的帖子

恩 是的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 5秒快速注册
本版积分规则
关闭

BcWhy推荐上一条 /1 下一条

QQ|关于我们|最新帖子|小黑屋|手机版|编程十万个为什么 ( 粤ICP备16108587号-2   GMT+8, 2017-8-18 05:25 , Processed in 0.189150 second(s), 37 queries , File On.
Powered by Discuz! X3.3 © 2001-2017 Comsenz Inc.
快速回复 返回顶部 返回列表
尊宝国际娱乐APP下载亚虎娱乐手机官方网站亚虎国际娱乐齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载
优乐娱乐亚虎娱乐手机官方网站亚虎国际娱乐梦之城娱乐
尊宝国际娱乐APP下载尊宝国际手机首页尊宝国际娱乐城齐乐娱乐国际
优乐娱乐齐乐娱乐网优乐娱乐龙8娱乐手机下载