求不带头结点的单链表的逆置算法?

[复制链接]
查看11 | 回复1 | 2010-1-7 19:24:10 | 显示全部楼层 |阅读模式
3个指针a,b,c下面是遍历过程第一个结点:a第二个结点:b a第三个结点:c b a以后的结点3个指针同时往后移,直到a为null每经过一个结点执行b->next = cc = bb = aa = a->next节点少于3个单独判断一下,处理也很简单开始节点注意->next要变成Null,最后返回a1楼的回答数据规模稍微大一点就不行了,32位机的递归栈16,逆置超过16的链表就递归栈溢出了
回复

使用道具 举报

千问 | 2010-1-7 19:24:10 | 显示全部楼层
不带头结点~~无论是空节点、一个节点、都行。struct node{ int data; node * next;};void reverse(struct node ** head){ if( *head==0 ||(*head)->next==0)return; node * end = (*head)->next; (*head)->next = 0; while(end) {node *next = end->next;end->next = *head;*head = end;end = next; }}注意调用的时候要传头指针的地址,假如头指针 struct node * head;这样调用reverse(&head);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行