zoukankan      html  css  js  c++  java
  • 数据结构与算法之链表(LinkedList)——简单实现

        这一定要mark一下。虽然链表的实现很简单,且本次只实现了一个方法。但关键的是例子:单向链表的反转。这是当年我去H公司面试时,面试官出的的题目,而当时竟然卡壳了。现在回想起来,还是自己的基本功不扎实,代码写的太少。所以现在趁闲暇之余,补课补起来。

     1 class _LinkedListEntry<E> {
     2   E element;
     3   _LinkedListEntry next;
     4 
     5   _LinkedListEntry(this.element);
     6 
     7   String toString() => element.toString();
     8 }
     9 
    10 class LinkedList<E> {
    11   _LinkedListEntry<E> head;
    12 
    13   void add(E element) {
    14     var entry = _LinkedListEntry(element);
    15     entry.next = head;
    16     head = entry;
    17   }
    18 }
    19 
    20 
    21 void main() {
    22   var ll = LinkedList<String>();
    23   ll..add('java')..add('dart')..add('go')..add('c');
    24   for (var ptr = ll.head; ptr != null; ptr = ptr.next) print(ptr);
    25 
    26   print('----------------');
    27   var reversed = reverse(ll);
    28   for (var ptr = reversed.head; ptr != null; ptr = ptr.next) print(ptr);
    29 }
    30 
    31 LinkedList<E> reverse<E>(LinkedList<E> ll) {
    32   var reversed = LinkedList<E>();
    33   var a = ll.head;
    34   while (a != null) {
    35     var t = a.next;
    36     a.next = reversed.head;
    37     reversed.head = a;
    38     a = t;
    39   }
    40   return reversed;
    41 }
  • 相关阅读:
    xml DTD中的ELEMENT和ATTLIST
    xml CDATA
    xml 及其语法
    java 多态的好处
    libusb-win32 在visual studio2008中成功编译回忆录
    【转帖】C# DllImport 系统调用使用详解 托管代码的介绍 EntryPoint的使用
    【转帖】.Net中C#的DllImport的用法
    .net 中的DllImport
    离线安装谷歌扩展
    排序算法哪家强?
  • 原文地址:https://www.cnblogs.com/outerspace/p/10303954.html
Copyright © 2011-2022 走看看