#include <iostream>
#define NULL 0
using namespace std;
struct Node
{
char data;
Node* next;
};
Node* create()
{
Node* head = NULL;
Node* rear = head;
Node* p; // The pointer points to the new created node.
char tmp;
do
{
cout << "Please input integer or char '#':";
cin >> tmp;
if(tmp != '#')
{
p = new Node;
p->data = tmp;
p->next = NULL;
if(head == NULL)
{
head = p;
}
else
{
rear->next = p;
}
rear = p;
}
}
while(tmp != '#');
return head;
}
void print(Node* head)
{
cout << "The current list is: ";
Node* p = head;
if(head != NULL)
{
do
{
cout << p->data << cout << ' ';
p = p->next;
}
while(p != NULL);
}
cout << "\r\n";
}
Node* reverseSingleLinkedListRecursive(Node* p, Node*& head)
{
if(p == NULL || p->next == NULL)
{
head = p;
return p;
}
Node* tmp = reverseSingleLinkedListRecursive(p->next, head);
tmp->next = p;
p->next = NULL; // To prevent forming a ring.
return p;
}
int main()
{
Node* list = create();
print(list);
reverseSingleLinkedListRecursive(list, list);
print(list);
return 0;
}
// Output:
/*
Please input integer or char '#':1
Please input integer or char '#':2
Please input integer or char '#':4
Please input integer or char '#':6
Please input integer or char '#':3
Please input integer or char '#':8
Please input integer or char '#':7
Please input integer or char '#':9
Please input integer or char '#':0
Please input integer or char '#':#
The current list is: 10F69C3E8 20F69C3E8 40F69C3E8 60F69C3E8 30F69C3E8 80F69C3E8 70F69C3E8 90F69C3E8 00F69C3E8
The current list is: 00F69C3E8 90F69C3E8 70F69C3E8 80F69C3E8 30F69C3E8 60F69C3E8 40F69C3E8 20F69C3E8 10F69C3E8
*/
分享到:
相关推荐
本文实例讲述了C++数据结构与算法之反转链表的方法。分享给大家供大家参考,具体如下: 算法概述:要求实现将一条单向链表反转并考虑时间复杂度。 算法分析: 数组法(略): 将列表元素逐个保存进数组,之后再逆向...
全排列算法有两个比较常见的实现:递归排列和字典序排列。 (1)递归实现 从集合中依次选出每一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。 (2)字典...
数据结构和算法 目录 概述 这个存储库用于我在学校工作之外做的小型 C 和 C++ 程序。 该存储库包括我为实践所做的数据结构和算法。 展开以下部分以了解有关每个程序的更多信息。 随意 fork 这个存储库并自己处理一些...
对于前端工程师来说,最常用的是html、css、js,数据结构和算法薄弱 前端开发门槛低、人员参差不齐 前端开发只会写页面,不懂算法,伪程序员 面试考算法,通过率极低 看过c、c++、java版算法,javascript不会写 怎么...
2.1.4 环形数据结构 2.2 标记——清扫算法 2.2.1 算法 2.2.2 标记——清扫算法的优势和弱点 2.3 节点复制算法 2.3.1 算法 2.3.2 一个例子 2.3.3 节点复制算法的优势和弱点 2.4 比较标记——清扫技术和节点复制技术 ...
2.1.4 环形数据结构 2.2 标记——清扫算法 2.2.1 算法 2.2.2 标记——清扫算法的优势和弱点 2.3 节点复制算法 2.3.1 算法 2.3.2 一个例子 2.3.3 节点复制算法的优势和弱点 2.4 比较标记——清扫技术和节点复制技术 ...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
2.2 指定位置反转单链表 2.3 依据给定值将链表重新排序 2.4 删除链表中重复元素 2.5 指定位置旋转链表 2.6 删除倒数第N个节点 2.7 成对交换链表元素 2.8 复制复杂链表 2.9 链表环相关问题 2.9.1 链表是否有环 2.9.2 ...
leetcode 2 和 c 动态安全协议 ...构建数据结构/选择正确的数据结构 你可能需要 OOP 二进制搜索:) logn 复杂度 - 每次都减少到 1/2 - 所以 log base 2,这就是逻辑 快速排序在类似的线路上实现 复杂性和大
C/C++ 程序(简单) 排序 0 1 2(中) 替代排序(简单) K 最小元素(硬) 计数反转(硬) GeeksForGeeks - 收集雨水(硬) 股票买卖以最大化利润(中) 以螺旋形式打印给定矩阵(中) 按行和按列排序的二维数组中的...
FFT的Stockham公式用于更好地将问题映射到GPU并避免香草Cooley-Tukey算法所需的昂贵的位反转操作。制作说明通过git clone --recurse-submodules git://github.com/achalpandeyy/OceanFFT.git与子模块递归git clone ...
使用C++实现的 已学习到的知识总结 左神算法课 L00 04 反转单向链表和双向链表 用curr,prev,next注意不要断链 在行和列都排好序的矩阵中找数,从右上角开始 打印两个单链表的相交的问题,注意还要考虑有环没有。 ...
字符串反转 2个 不使用strlen的字符串长度 3 阶乘使用递归 4 斐波那契使用递归 5 数字位数 6 阿姆斯特朗数 7 倒数 8 阶乘 9 斐波那契系列 10 回文数 11 2号LCM 12 是否灌注 13 空心矩形 如何...