尊宝国际娱乐APP下载

设为首页收藏本站

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

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

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

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

贪吃蛇的蛇身可以用数组来表示,但是为了训练数据结构的使用,选用双向链表.双向链表的操作也使得我们非常方便的控制蛇身的移动.而且充分利用资源.C/C++贪吃蛇2011/4/29
定义一个名为snake的结构体。如下所示:
struct snake
{
    int x, y;
//x,y
分别保存行坐标和列坐标
    snake *prior;
//
指向前一个结点的指针
    snake *next;
//
指向下一个结点的指针
};
C语言如下定义以便以后使用snake一致
typedef struct snake
{
    int x, y;
//x,y
分别保存行坐标和列坐标
    struct snake *prior;
//
指向前一个结点的指针
    struct snake *next;
//
指向下一个结点的指针
}snake;
这样就完成了我们蛇身的结点。接下来定义两个指针,指向第一个结点(在此我把它叫做头结点)的指针,指向最后一个结点(尾结点)的指针。
.. snake *head, *tail;
head = tail = NULL,
初始化两者相等且为空。
今天的题目是用一个add_head(int a, int b)函数增加一个行坐标为a,列坐标为b的结点到双向链表作为新的头结点。一次函数的调用只需完成一个结点的增加即可。
打个比方:一开始,head和tail皆为空,那么我们添加的这个结点就作为双向链表的头结点(同时也是尾结点,因为这时只有一个结点)
当双向链表已经有结点的时候,就将新来的结点增加到头结点的前面,成为新的头结点。
下面的图说明了这个过程。
值得我们注意的是,snake*类型的指针都是指向整个的一个结点。
比如我们的head,tail以及snake内部的prior,next。
参考答案:
游客,如果您要查看本帖隐藏内容请回复



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

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

!related_be_replied_threads!
令人羡慕的沙发
发表于 2011-4-28 09:58:25 | 只看该作者
上课中……中午如果部门没事就回去做,有事的话晚上搞定
回复 使用道具 举报
冷板凳
发表于 2011-4-28 11:24:41 | 只看该作者
单向链表还会。双向的就
回复 使用道具 举报
4
发表于 2011-4-28 11:41:12 | 只看该作者
单向链表是以个接一个。双向的呢?思路是什么?
回复 使用道具 举报
5
 楼主| 发表于 2011-4-28 11:59:25 | 只看该作者
Subtracet 发表于 2011-4-28 11:41
小白求教  (双向链表  =  动态链表  ) ????

不等于,,双向链表是动态链表。
单链表,循环链表等等都是动态链表,
一般我们用的都是动态链表,
不过有一种静态链表,用数组描述的链表。
回复 使用道具 举报
6
发表于 2011-4-28 11:59:50 | 只看该作者
链表啊。这个。。。。
回复 使用道具 举报
7
 楼主| 发表于 2011-4-28 12:00:18 | 只看该作者
小虫虫 发表于 2011-4-28 11:41
单向链表是以个接一个。双向的呢?思路是什么?

单链表会,,双向链表也不成问题。
单链表只有一个next指针,
双向链表多了一个prior指针,,指向前一个结点。 这样就是双向的了。
回复 使用道具 举报
8
 楼主| 发表于 2011-4-28 12:01:17 | 只看该作者
369778072 发表于 2011-4-28 11:36
双向链表?

会单链表,,加一个prior指针指向前一个结点就成了双向链表
回复 使用道具 举报
9
发表于 2011-4-28 12:03:37 | 只看该作者
打个比方就是。我站中间。单向链表就是其他人都站我后面?而双向链表就是既能站我前面也能站我后面?还有个问题啊。。双向链表再加入新结点的时候。是不是后面前面要一起加?不能只加前面不加后面。或者只加后面不加前面?
回复 使用道具 举报
10
 楼主| 发表于 2011-4-28 12:07:17 | 只看该作者
小虫虫 发表于 2011-4-28 12:03
打个比方就是。我站中间。单向链表就是其他人都站我后面?而双向链表就是既能站我前面也能站我后面?还有个 ...

单链表的话 你站前面只能看到你后面的人。
双向链表,你既能看到你前面的人,也能看到你后面的人。
双向链表加入结点。。
这里我的实现是插入一个新结点作为头结点,也就是插到所有结点的前面
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 5秒快速注册
本版积分规则
关闭

BcWhy推荐上一条 /1 下一条

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