【链表】逆序输出单链表(单链表反转)
来源:互联网 发布:mac怎么剪切文件夹 编辑:程序博客网 时间:2024/05/16 00:53
将一个单链表从尾到头反过来打印每个结点的值
我想到了三种方法:
先反转单链表,然后再从头到尾输出;
步骤:
1. 将当前节点的next节点指向他之前的前一个节点;
2. 当前节点下移一位;
3. 如果是最后一个节点,就把它的next节点指向它以前的前一个节点,并退出循环;利用栈倒序输出链表
直接访问单链表每个结点,依次将每个结点存储在一个栈中,然后输出这个栈;利用递归访问原单链表;
递归就是一个进栈出栈的过程,链表前面的元素先进栈,在栈底,后面的元素后进栈,在栈顶,先出栈。
创建单链表
单链表结点定义:
struct Node{ int data; Node *next;};
创建长度为6的单链表
Node* createList(int n){ Node *head, *ptr, *newNode; head = new Node; //head->data = 0; head->next = NULL; ptr = head; for (int i=0; i<n; i++) { newNode = new Node; newNode->data = i; newNode->next = NULL; ptr->next = newNode; ptr = ptr ->next; } return head;}void dispalyList(Node *head){ Node *ptr; ptr = head ->next; while(ptr != NULL) { cout<<ptr->data<<"->"; ptr = ptr -> next; } cout<<"NULL"<<endl;}int main(){ cout<<"创建单链表:"<<endl; Node *head = createList(6); dispalyList(head); cout<<endl;}
解法一:先反转,然后依次输出
void reverseLinkList(Node *head){ if(head == NULL) { cout<<"error"<<endl; return; } Node *p, *q, *r, *headNode; headNode = head; p =head->next; q = NULL; while(p!=NULL) { r = q; q = p; p = p->next; q ->next = r; } headNode ->next = q;//将头指针接在前面 head = headNode;}
调用
cout<<"创建单链表:"<<endl;Node *head = createList(6);dispalyList(head);cout<<endl;cout<<"反转单链表:"<<endl;reverseLinkList(head);dispalyList(head);cout<<endl;
解法二:递归
void reverseDisplayLinkList(Node *head){ if(head != NULL) { if (head ->next != NULL) { reverseDisplayLinkList(head ->next); } cout<<head->data<<"->"; }}
调用
cout<<"创建单链表:"<<endl; Node *head = createList(6); dispalyList(head); cout<<endl; cout<<"反转单链表:"<<endl; reverseDisplayLinkList(head->next);
阅读全文
0 0
- 【链表】逆序输出单链表(单链表反转)
- 单链表反转(逆序)
- 单链表逆序反转
- 单链表逆序/反转
- 单链表反转/逆序
- IO逆序反转输出
- 单链表逆序或者逆序输出
- 单链表逆序 也叫反转
- 逆序反转单链表 Python 版
- java字符串反转,逆序输出(句子反转,单词不反转)
- 单链表的逆序输出
- 单链表的逆序输出
- 如何逆序输出单链表?
- 单链表逆序输出
- 数据结构--单链表逆序输出
- 单链表的逆序输出
- 逆序输出单链表
- 单链表逆序输出
- 将多行转成一行 oracle
- Java IO核心操作(四)
- 《 Git的使用--如何将本地项目上传到Github》
- 线段树-扫描线
- Unity网格编程篇(四) 三维温度图、热力图
- 【链表】逆序输出单链表(单链表反转)
- python学习之迭代器、生成器和装饰器
- Python简介
- linux设备树编译器DTC
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F. Overlapping Rectangles
- windows 7 下安装TensorFlow
- 《惊魂记》
- 机器学习深入与强化--回归分析与工程应用
- UNIX网络编程之一:代码环境搭建