#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 new created node.
char tmp;
do
{
cout << "Please input positive integer or #:";
cin >> tmp;
if(tmp != -1)
{
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";
}
void reverse(Node*& head) // Use & here since the function body changed the head pointer.
{
if(head == NULL)
{
return;
}
Node*pre, *cur, *ne;
pre = head;
cur = head->next;
while(cur)
{
ne = cur->next; // Store next pointer.
cur->next = pre; // Reverse the current code pointer.
pre = cur;
cur = ne;
}
head->next = NULL;
head = pre;
}
int main()
{
Node* list = create();
print(list);
reverse(list);
print(list);
return 0;
}
// Output:
/*
Please input positive integer or #:1
Please input positive integer or #:5
Please input positive integer or #:8
Please input positive integer or #:3
Please input positive integer or #:2
Please input positive integer or #:7
Please input positive integer or #:9
Please input positive integer or #:f
Please input positive integer or #:g
Please input positive integer or #:t
Please input positive integer or #:Y
Please input positive integer or #:B
Please input positive integer or #:#
The current list is: 10FC0C3E8 50FC0C3E8 80FC0C3E8 30FC0C3E8 20FC0C3E8 70FC0C3E8 90FC0C3E8 f0FC0C3E8 g0FC0C3E8 t0FC0C3E8 Y0FC0C3E8 B0FC0C3E8 #0FC0C3E8
The current list is: #0FC0C3E8 B0FC0C3E8 Y0FC0C3E8 t0FC0C3E8 g0FC0C3E8 f0FC0C3E8 90FC0C3E8 70FC0C3E8 20FC0C3E8 30FC0C3E8 80FC0C3E8 50FC0C3E8 10FC0C3E8
*/
分享到:
相关推荐
C++ 单链表反转 C++ 单链表反转 C++ 单链表反转
List-LinkedList 单链表就地反转 的代码的一种实现。
代码中包含单链表的常用操作,主要实现以下六个算法: 1.单链表的就地反转 2.链表相交或求公共起始节点 3.求链表倒数第n个节点 4.删除单个节点 5.判断链表是否有环 6.将2个递增的链表合并为递减链表 并全部调试通过...
数据结构-反转数字-java(csdn)————程序
算法-单链表遍历及反转(java)(csdn)————程序
主要介绍了Python3实现的反转单链表算法,结合实例形式总结分析了Python基于迭代算法与递归算法实现的翻转单链表相关操作技巧,需要的朋友可以参考下
单链表是一种线性数据结构,它包含一系列的节点,每个节点都含有一个值和指向下一个节点的引用。 单链表的特性 单链表具有动态性,可以灵活地插入和删除元素,但访问元素时需要从头节点开始顺序查找。 单链表的应用 ...
C#数据结构反转线性表算法 ...........
单链表反转是面试时经常会遇到的问题,之前只是在数据结构里用伪代码实现过单链表反转。为落实亲手编写每一个程序的目标,在这里用java实现反转。方法有很多,这里只写最优的。时间复杂度O(n),空间复杂度O(1)。也...
大厂前端面试算法|# 数据结构和算法 数据结构和算法,是大厂前端面试的“拦路虎”,很多同学都望而生畏。其实如果了解常用数据结构,掌握基本的算法思维,就不能应对。本章将通过多个面试题,为你讲解算法面试题的...
04code-反转数组.html
单链表模版实现 功能: 1 创建 2 遍历 3 反转 4 插入 5 取值 6 修改某位置值 7 删除
数组复杂应用-反转.go
c代码-反转一个单链表。
8-1 循环队列-原理讲解 8-2 循环队列-代码实操 8-3 任务队列-原理讲解 8-4 任务队列-代码实操 第9章 数据结构之“链表”链表是一个有序的线性数据结构,对于它而言排序和循环是最基本的两项技能,这个章节从零是...
将邻居结合法应用于结合的iPBS-反转录转座子和SSR数据,无花果基因型被分为两组。 使用STRUCTURE软件确定种群结构。 在所研究的基因型中,鉴定出两个种群(K = 2),表明阿尔及利亚和土耳其品种之间的多样性较...
算法大全面试题数据结构单链表的13道面试题含代码 1.单链表反转 2.找出单链表的倒数第四个元素 3.找出单链表的中间元素 4...