借助栈实现单链表的原地逆置

【问题描述】首先建立一个单链表,通过栈实现该链表的原地逆置,注意仅使用链表中的原有的结点空间,结点的数据成员为int型。注意这个题需要单链表和栈两个类。

【输入形式】输入只有一行,依次输入若干个整数,整数之间用一个空格分开,最后以-1结束,用表尾添加结点的方法建立一个单链表。

【输出形式】输出有2行,第1行为原链表数据,第2行为逆置后的链表数据,具体格式见样例输出

【样例输入】

1 2 3 4 5 -1
【样例输出】

1–>2–>3–>4–>5

5–>4–>3–>2–>1

代码如下:

#include<iostream>using namespace std;struct LinkNode
{int data;LinkNode* link;LinkNode(){link = NULL;}LinkNode(int x){data = x;link = NULL;}
};class LinkList
{
public:LinkList(){head = new LinkNode;}~LinkList(){}void creat(){int num = -1;LinkNode* NewNode = NULL, * current = head;while (cin >> num && num != -1){NewNode = new LinkNode(num);current->link = NewNode;current = NewNode;}}LinkNode* get_head(){return head;}void display(){LinkNode* p = head->link;while (p->link != NULL){cout << p->data << "-->";p = p->link;}cout << p->data << endl;}
private:LinkNode* head;
};class Stack
{
public:Stack(){top = NULL;}~Stack(){}void all_push(LinkNode* T){top = T;LinkNode* current=T->link;while (current != NULL){T = current;current = T->link;T->link = top;top = T;}}void all_pop(LinkNode* head){while (top->link != head){cout << top->data << "-->";top = top->link;}cout << top->data << endl;}
private:LinkNode* top;
};void change(LinkList& s,Stack& temp)
{LinkNode* t = s.get_head();temp.all_push(t);temp.all_pop(t);
}
int main()
{LinkList s;s.creat();s.display();Stack temp;change(s,temp);return 0;
}

借助栈实现单链表的原地逆置相关推荐

  1. c语言借助栈单链表逆置,借助栈实现单链表逆置--数据结构

    标题: 借助栈实现单链表逆置 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 用链式存储实现栈的初始化.入栈.出栈.取栈顶.判栈空等操作,在主函数中借助栈的基本 ...

  2. 设计一个算法,借助栈实现单链表链接顺序的逆转

    设计一个算法,借助栈实现单链表链接顺序的逆转: 程序思路:题目要求为借助栈将单链表中的数据逆置输出,栈的特点就是先进后出,只 需要将单链表中的数据依次存储在栈中,然后将栈中的元素依次取出即可.关键代码 ...

  3. 【单链表】单链表的就地逆置

    编写算法实现带头结点单链表seqlist的就地逆置,即利用原带头结点单链表seqlist的结点空间,把数据元素顺序排反 题目分析: 在前面2-18讲了顺序表的就地逆置,但单链表的就地逆置与顺序表有所不 ...

  4. java实现单链表就地逆置,单链表的就地逆置讲解

    { List *q; List *p = L->next; L -> next = NULL; //单链表就地逆置 while (p != NULL) { q = p -> next ...

  5. c语言字符就地逆置,高手看看我的C语言代码单链表实现就地逆置

    高手看看我的C语言代码单链表实现就地逆置 单链表实现就地逆置#include #include struct type{ int date; struct type * next;}first;int ...

  6. 对单链表实现就地逆置

    对单链表实现就地逆置 /* 对单链表实现就地逆置 */ #include <stdio.h> #include "malloc.h"typedef struct LNo ...

  7. 对带头结点的单链表实现就地逆置的算法分析

    试写一算法,对单链表实现就地逆置. 实现下列函数: void Inverse(LinkList &L);  /* 对带头结点的单链表L实现就地逆置 */ 单链表类型定义如下: typedef ...

  8. 单链表反转(逆置)——(四种方法实现)

    链表逆置就是把最后一个数据提到最前面,倒数第二个放到第二个--依次类推,直到第一个到最后一个. 由于链表没有下标,所以不能借助下标来实行数据的逆置,要靠空间的转移来完成链表的逆置,这里采用没有头节点的 ...

  9. 单链表逆置 java_单链表的就地逆置--java实现(含头节点和不包含头节点)

    前沿:链表是面试中经常问道的知识点,比如链表反转,就地反转,判断单链表是否相交,判断链表是否有环等都是常问的问题.今天说一下单链表就地反转. 本文从包含头节点和不包含头节点两种链表都提供了相应的就地反 ...

最新文章

  1. 调焦后焦实现不同距离成像_90%的人都忽视的“最近对焦距离”,其实有大用处...
  2. win10下右键菜单添加“打开cmd”
  3. Bash基础(2) 通配符 组合键 数据重定向 管道 tee
  4. php制作曲线柱形图的框架,用GD图库生成横竖柱状图折线图的类_php
  5. 转:Delphi2010新发现-类的构造和析构函数功能
  6. 充分使用表格标签(Table)
  7. 我的java web之路(安装)
  8. python与java的默认入参(重载)
  9. 思科EIGRP配置及基本讲解
  10. Silverlight笔记:模态窗体的实现
  11. python实现一个简单的网上购物系统
  12. 应届毕业生找工作很迷茫?4招教你快速破局,应届生必看!
  13. 【C语言程序设计进阶-浙大翁恺】C语言笔记 文件
  14. vue导入音乐_【vlog制作】不经电脑,如何在VUE中导入自定义音乐
  15. 墙裂推荐免费的试题搜索网站
  16. 一、浙江专升本高等数学考点-函数
  17. qbo_camera包 stereovision.cpp 代码分析
  18. 论 SPI 架构(hw+sw) --- Linux kernel 实现欣赏
  19. python中sub是什么意思_相当于Python中R的sub和paste(字符串和数字的连接)
  20. 金山:2月新增病毒356万 十大病毒出炉

热门文章

  1. 丢番图方程c语言114,丢番图方程的实现
  2. RTL8188EUS驱动程序编译步骤
  3. 沈家桢博士:缘起性空与人生
  4. cast 和convert和concat详解以及mysql和sqlserver兼容问题
  5. 【历史上的今天】6 月 26 日:EDSAC 计算机之父诞生;B 站成立;Skype 创始人出生
  6. WIN10电脑热点无法共享
  7. 误差棒是什么?误差柱状图如何做?
  8. [Eclipse]GEF入门系列(二、GEF概述)
  9. PHP抓取页面中a标签的href属性值以及a中间内容
  10. SPD查看内存默认频率