链表实现(打印元素的实现)

输入一个链表,从尾到头打印链表每个节点的值。要求返回 “新链表头”(递归实现)

struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :val(x), next(NULL)
        {
        }
};
vector<int> printListFromTailToHead(struct ListNode* head)
{
     vector<int> v;
     if(head!=NULL)
     {
         if(head->next!=NULL)
         {
             v=printListFromTailToHead(head->next);
         }
         v.push_back(head->val);
     }
}
时间: 2024-08-10 00:07:17

链表实现(打印元素的实现)的相关文章

【练习题】编写打印出一个单链表的所有元素的程序【链表】

只是实现了链表ADT的部分功能. /*---编写打印出一个单链表的所有元素的程序---*/ #include <stdio.h> #include <stdlib.h> struct Node{ int val; struct Node *next; }; Node *findEnd(Node *list){ while(list->next) list = list->next; return list; } void insert(int val, Node *li

26、输入一个链表,反转链表后,输出链表的所有元素。

输入一个链表,反转链表后,输出链表的所有元素. 思路:  ListNode next = null;//用来保存待反序的第一个节点(head 和 next节点) ListNode pre = null;//用来保存已经反序的第一个结点 next = head.next;//首先记录当前节点的下一个节点,(保存起来) //先用next保存head的下一个节点的信息,保证单链表不会因为失去head节点的原next节点而就此断裂 head.next = pre;//让当前节点指向前一个节点,因为要反序

javascript中的链表结构—从链表中删除元素

1.概念 上一个博文我们讲到链表,其中有一个方法remove()是暂时注释的,这个方法有点复杂,需要添加一个Previous()方法找到要删除的元素的前一个节点,这一个博文我们来分析一下这个remove()方法. 从链表中删除节点的时候,需要先找到这个待删除节点的前面的节点.找到这个节点之后修改它的next属性,使其指向待删除节点的下一个节点,这样就把待删除节点给删除了,是不是很简单呢?但是问题来了,我们是不是要找到待删除节点的前面一个节点呢?这样就需要添加一个findPrevious()方法来

链表创建打印删除

链表创建打印删除:http://wenku.baidu.com/view/d2343df67c1cfad6195fa7d8.html http://bbs.ednchina.com/BLOG_ARTICLE_2143077.HTM http://zhidao.baidu.com/link?url=vdWWhzPcyNykH1NSG-EdhHnPAsmTS6VDSmm-hMZU7GZPi7-w5s-WRpANOCat9y7C5xQHYLjwjPQWeZj9yb_91q http://www.2ct

【LeetCode-面试算法经典-Java实现】【203-Remove Linked List Elements(删除单链表中的元素)】

[203-Remove Linked List Elements(删除单链表中的元素)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 代码下载[https://github.com/Wang-Jun-Chao] 原题 Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5

生成单向链表 并删除链表中某个元素

leetcode 题目描述: Remove all elements from a linked list of integers that have value val. Example Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6 Return: 1 --> 2 --> 3 --> 4 --> 5 生成链表 若输入元素不为0,则加入到链表尾部,若为0,不加入,且生成链表工作完成.代

CareerCup之2.1无序链表删除重复元素

[题目] 原文: 2.1 Write code to remove duplicates from an unsorted linked list. FOLLOW UP How would you solve this problem if a temporary buffer is not allowed? 译文: 从一个未排序的链表中移除重复的项 进一步地, 如果不允许使用临时的缓存,你如何解决这个问题? [分析] (1)如果可以使用额外的存储空间,我们就开一个数组来保存一个元素的出现情况.

数据结构-寻找单链表的中间元素

1:这里使用一个只用一遍扫描的方法.描述如下: 假设mid指向当前已经扫描的子链表的中间元素,cur指向当前已扫描链表的末节点,那么继续扫描即移动cur到cur->next,这时只需判断一下应不应该移动mid到mid->next就行了.所以一遍扫描就能找到中间位置.代码如下: // ConsoleApplication15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <malloc.h> #inclu

链表的数组实现 令链表的所有元素在数组中保持紧凑 《算法导论》10.3-4

让长度为m的链表的所有元素占用数组的前m个位置. 假设数组总长度为SIZE,用一个变量freeHead记录空闲表的起始下标, 则[freeHead, SIZE)的范围内的对象全部属于自由表.用一个Object对象list表示链表头. 当从链表的任意位置删除元素时,比如下标为pos的元素,那么就让下标为pos和freeHead-1的元素互换在链表中的位置,然后删除互换后下标为freeHead-1的元素,也就相当于删除了互换前下标为pos的元素,这样一来,就可以保证所删除元素的位置始终是自由表头fr

返回链表的中间元素

这是剑指offer15题的扩展 下面是自己实现的一个类似于LinkedList类,其中findMid方法是获取链表的中间节点的实现方法(在未知列表长度的情况下),大致思路如下: 1.首先在方法中定义slow . fast两个局部变量. 2.slow每次循环next一次,fast每次循环next两次,当fast.next==null时表示fast已经执行到达了链表的末尾,而slow刚好执行到链表的一半. 加上这个可以返回偶数个数的第一个,不加返回第二个 if(fast==null){ break;