| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 574 人关注过本帖
标题:关于链表的几个问题
只看楼主 加入收藏
唔唔唔
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-3-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:1 
关于链表的几个问题
声明:可以把向前挂车厢想象成把后一节车厢的地址赋值给前一车厢的next指针。

首先,我们把链表的节点比喻成火车的车厢。每节车厢的前面都有一个钩子,我们把这想想成指针,他用来连接上一节车厢。

接着,使用尾插法的话,也就是先要找到火车尾,即链表的尾指针。然后把自己要加进去的车厢挂到火车的最后面。最后标记这节车厢为火车尾(把地址赋值给尾指针)。

使用头插法的话,就是先找到火车头,即链表的头指针。然后把头指针后面的那节车厢挂到你要插入链表的那节车厢的后面。最后在把插入链表的那节车厢挂到火车头去(把地址赋值给头指针)。

举例:
(火车车厢)
struct node
{
  int    num;
  node*  next;
};
(火车头)node* Head;
(火车尾)node* End;
(车厢1)node* m1;
(车厢2)node* m2;

//开始前链表只有火车头,后面没有车厢,车头也是车尾。

Head=End=NULL;

//1.头插法

//申请车厢1

m1=new node;
m1->next=NULL;

if(Head==NULL) //如果只有火车头执行这里面的  就想问问这里的head不是本来就等于null嘛,为什么要用if语句
{
   Head=m1; //把第一节车厢先挂到车头先
   End=m1;  //现在只有这节车厢,所以他是尾车厢
}else       //如果除了火车头还有其他车厢执行这里面的
{
   m1->next=Head; //先把火车头后面的车厢挂到第一节车厢后面先   这里的head应该不是第一节车厢而是车头吗?
   Head=m1;       //再把整串火车挂回车头  
}
搜索更多相关主题的帖子: 火车头 
2017-04-20 12:58
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:20 
这个比喻也是挺好玩的。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-04-20 15:28
快速回复:关于链表的几个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022381 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved