博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反转链表
阅读量:5034 次
发布时间:2019-06-12

本文共 1136 字,大约阅读时间需要 3 分钟。

      又见翻转链表,这回是给定接口的递归和非递归翻。比反转链表多了接口限制。

#include 
 
using namespace std;
 
typedef struct node LinkNode;
struct node
{
int data;
LinkNode *next;
};
 
LinkNode *reverse_link(LinkNode *head)
{
if (head == NULL) return NULL;
 
LinkNode *prev = NULL, *next = head->next;
 
while (next != NULL)
{
head->next = prev;
prev = head;
head = next;
next = head->next;
}
 
head->next = prev;
 
return head;
}
 
LinkNode *reverse_link_recursive(LinkNode *head)
{
if (head == NULL) return NULL;
if (head->next == NULL) return head;
 
LinkNode *next = head->next;
LinkNode *reverse_head = reverse_link_recursive(next);
next->next = head;
head->next = NULL;
 
return reverse_head;
}
 
void print_link(const LinkNode *head)
{
while (head != NULL)
{
cout << head->data << " ";
head = head->next;
}
 
cout << endl;
}
 
int main()
{
LinkNode o[6];
 
for (int i = 0; i < 5; ++i)
{
o[i].data = i;
o[i].next = &o[i + 1];
}
o[4].next = NULL;
 
print_link(&o[0]);
LinkNode *head = reverse_link(&o[0]);
print_link(head);
head = reverse_link_recursive(head);
print_link(head);
 
return 0;
}

转载于:https://www.cnblogs.com/codingmylife/archive/2012/10/06/2713462.html

你可能感兴趣的文章
Cisco AP-ROMMON升级AP镜像
查看>>
十天冲刺3
查看>>
80. Remove Duplicates from Sorted Array II
查看>>
数据库-mongodb-高级查询表达式
查看>>
struts2 ajax 实现方式
查看>>
文件上传控件
查看>>
LoadRunner HTTP脚本迭代处理的常见问题
查看>>
fiddler安装及抓取http和https请求
查看>>
sessionManager配置
查看>>
PAT乙级.1001.害死人不偿命的(3n+1)猜想
查看>>
【leetcode】Reorder List (middle)
查看>>
神奇的表单
查看>>
HDU 3746 将字符串的全部字符最少循环2次需要添加的字符数
查看>>
BZOJ2456: mode
查看>>
Mac中配置TortoiseHg
查看>>
ExtJs4 笔记 ExtJs大比拼JQuery:Dom文档操作
查看>>
TCP从连接到释放过程全解
查看>>
这几道Python面试题,稳准狠,Python面试题No15
查看>>
2014-05-15 总结
查看>>
wp7 退出程序的提示对话框
查看>>