2.3从尾到头输出单链表每个结点的值

这个可以用栈来实现,遍历单链表,将数值存到栈上,遍历完之后,再输出栈中的数据

能用栈解决,就可以联想到使用递归来解决了,每当访问一个结点,先递归输出他后面的结点,然后再输出本身,这样链表就反向输出了。

//从尾到头输出结点说的值

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode,*LinkList;

void R_Print(LinkList L)
{
    if(L->next!=NULL)
    {
       R_Print(L->next) ;
    }
    printf("%d",L->data);
}

int main()
{
    return 0;
}
时间: 2024-10-21 15:50:04

2.3从尾到头输出单链表每个结点的值的相关文章

从尾到头打印一个链表

1.利用jdk的链表数据结构实现: /** * 问题7.从尾到头打印列表 用jdk的LinkList * */ @Test public void print_reverse_LinkedList(){ LinkedList<Person> list = new LinkedList<Person>(); for (int i =5;i>0;i--){ Person p1 = new Person(); p1.setName("Alice"+i); p1.

06 从尾到头打印新链表

题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路: 1)使用list容器:顺序访问链表,使用push_front()将元素插入list容器的前方. 2)使用栈 3)使用递归函数:递归在本质上是一个栈结构 4)用反向迭代器(object.rbegin(), object.rend()) 5)头插法(复杂度高) 测试用例: 1)功能测试:(输入的链表有多个节点:只有一个节点) 2)特殊输入测试:(输入的链表头节点指针为nullptr) 代码: 1)使用list容

输出单链表中倒数第k个结点(Java版)

题目:输入带头结点的单链表L,输出该单链表中倒数第k个结点.单链表的倒数第0个结点为该单链表的尾指针.要求只能遍历一次单链表. 解题思路: 如果不要求只能遍历一次单链表,我们可以先遍历一次单链表,求出它的结点的总个数n(包括头结点),所以单链表的结点是从倒数第n-1个到倒数第0个,然后再遍历一次单链表,遍历时访问的第n-k-1个结点就是该单链表中倒数第k个结点.现在要求只能遍历一次单链表,可以设两个指针p和q,最开始时它们都指向头结点,然后p向后移动k位,最后p,q同时向后移动直到p为最后一个结

输出单链表中倒数第k个结点

题目:输入带头结点的单链表L,输出该单链表中倒数第k个结点.单链表的倒数第0个结点为该单链表的尾指针.要求只能遍历一次单链表. 解题思路: 如果不要求只能遍历一次单链表,我们可以先遍历一次单链表,求出它的结点的总个数n(包括头结点),所以单链表的结点是从倒数第n-1个到倒数第0个,然后再遍历一次单链表,遍历时访问的第n-k-1个结点就是该单链表中倒数第k个结点.现在要求只能遍历一次单链表,可以设两个指针p和q,最开始时它们都指向头结点,然后p向后移动k位,最后p,q同时向后移动直到p为最后一个结

在不改变链表的情况下从尾到头打印连表

输入一个连表的头结点,从尾到头反过来打印出每个结点的值. C#语言实现: public static void PrintRev(LinkedList<int> lList)         {             Stack<int> stack = new Stack<int>();             foreach (int item in lList)             {                 stack.Push(item);   

第五十八题(从尾到头输出链表)

58.从尾到头输出链表. 题目:输入一个链表的头结点,从尾到头反过来输出每一个结点的值. 思路:题不难,提供几种思路 1.使用栈的先进后出特性实现,遍历链表元素依次入栈,再出栈就可以达到目的 2.使用数组先暂存顺序遍历的结果,再对数组反向遍历就可以. 3.递归,也就是这里採用的方法. C++代码: #include "stdafx.h" #include<ctime> #include<iostream> namespace MS100P_58 { void r

《剑指offer》第五题(重要!从尾到头打印链表)

文件main.cpp // 从尾到头打印链表 // 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值. #include <iostream> #include <stack> #include "List.h" using namespace std; void PrintListReversingly_Iteratively(ListNode* pHead)//解法一:使用栈 { stack<ListNode*> nodes;//定义

面试题5:JS实现从尾到头打印单链表

单链表,在内存中所占地址是不连续的.所以遍历单链表时:需要从头遍历.而题目要求输出的顺序:从尾到头.也就是说第一个遍历到的节点最后一个输出,而最后一个遍历到的节点第一个输出.这就是典型的“后进先出”,我们可以用栈来实现这种顺序. 例题一共包含四个文件.运行程序前提:项目安装了nodejs 1.stack_list.js:实现了一个普通的栈. /** * Created by ym-Wang on 2016/8/16. */ function Stack(){ this.top = null; t

剑指offer 面试题6.从尾到头打印链表

0.题目描述 输入一个链表的头结点,从尾到头反过来打印出每个节点的值. 1.解法 用栈即可. ? ? class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { stack<ListNode*> step; vector<int> ans; ListNode* p = head; while(p){ step.push(p); p = p -> next; } whi