单向链表问题

[复制链接]
 楼主| sinadz 发表于 2012-5-13 11:17 | 显示全部楼层 |阅读模式
struct node
{

void* next;
int data;

};

struct list
{

node* head;

list(){ head=new node();}

~list() { clear(); };

其他函数.................

};

void Reverse(list& another)
{
........
};


完善函数Rerverse,实现将 list逆序, 注意:list是单向的, 不是“逆序输出”,是将整个链表翻转。



我 的思路:

对比数组逆序,采用指针进行首尾扫描, 一个向前,一个向后, 进行交换数据。后来我发现是不行的,因为是单向,链表无法做到 向后扫描!!!!


不知道谁有思路解决这个问题。。。。
无冕之王 发表于 2012-5-13 11:23 | 显示全部楼层
采用头插法建立链表的方式进行。首先从已有链表的头结点开始。然后顺序遍历,每次遍历一个节点,把这个节点放置在新链表的头结点后面。这样就完成了倒置了。
yybj 发表于 2012-5-13 11:36 | 显示全部楼层
最简单的方法是 后一个节点不停的往前(指表头)插入
比如:1 2 3 4
2往前插后形成:2 1 3 4
3再往前插后形成: 3 2 1 4  
4再往前插后就是 4 3 2 1 了 这个实现代码很容易的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部