開発環境
- OS X Mavericks - Apple (OS)
- Dart Editor (開発環境)
- Dartium | Dart/ Structured web apps (ブラウザ, Dart VM 用 (Chromium with the Dart VM))
- Safari (ブラウザ, JavaScript 用)
- Dart (プログラミング言語)
C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の17章(高度なポインタ)、17-12(プログラミング実習)、実習17-3.をDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
17-12(プログラミング実習)、実習17-3.
コード
sample.dart
import 'dart:html'; void main(){ String s = 'kamimura'; InputElement input = querySelector('#f0'); InputElement run = querySelector('#run_dart'); InputElement clear = querySelector('#clear'); Element pre = querySelector('#pre0'); run.onClick.listen((MouseEvent event){ pre.text = window.navigator.userAgent + '\n'; var l = new DoubleList(); for(var n in nums){ l.add(n); } pre.text += '最初\n'; pre.text += '5の次: ${l.five.next}\n'; pre.text += '5の前: ${l.five.previous}\n'; pre.text += '${l}\n'; l.remove(0); pre.text += '0を削除\n'; pre.text += '${l}\n'; l.remove(9); pre.text += '9を削除\n'; pre.text += '${l}\n'; l.remove(5); pre.text += '5を削除\n'; pre.text += '${l}\n'; l.remove(10); pre.text += '10を削除\n'; pre.text += '${l}\n'; l.remove(1); l.remove(2); l.remove(3); l.remove(4); l.remove(6); l.remove(7); l.remove(8); pre.text += '全て削除\n'; pre.text += '${l}\n'; l.remove(5); pre.text += '5を削除\n'; pre.text += '${l}'; }); clear.onClick.listen((MouseEvent event) => pre.text = ''); } class Box{ var a; Box previous; Box next; Box(var x){ a = x; previous = null; next = null; } String toString(){ return a.toString(); } } class DoubleList{ Box head; DoubleList(){ head = null; } Box five = null; void add(var x){ if(head == null){ head = new Box(x); if(x == 5){ five = head; } return; } Box current = head; Box box = new Box(x); if(x == 5){ five = box; } while(true){ if(current.next == null){ if(x > current.a){ box.previous = current; box.next = null; current.next = box; if(current.previous == null){ head = current; } return; } box.next = current; box.previous = current.previous; if(box.previous == null){ head = box; current.previous = box; return; } current.previous.next = box; current.previous = box; return; } if(x <= current.a){ break; } current = current.next; } box.previous = current.previous; box.next = current; if(box.previous == null){ head = box; } else { current.previous.next = box; } current.previous = box; } void remove(var x){ if(x == 5){ five = null; } Box current = head; while(true){ if(current == null){ break; } if(x == current.a){ if(current.previous == null){ head = current.next; } else { current.previous.next = current.next; } if(current.next != null){ current.next.previous = current.previous; } break; } current = current.next; } } String toString(){ var result = ''; var current = head; while(current != null){ result += current.a.toString() + ' '; current = current.next; } if(result == ''){ result = '空っぽ'; } return result; } } List<num> nums = [9, 0, 8, 1, 7, 2, 6, 3, 5, 4];
0 コメント:
コメントを投稿