Link Stack List
$ dart 04_linked_list/link_stack_list.dart
import 'dart:io';
class Link {
int data;
Link next;
Link(this.data) {}
void displayLink() {
stdout.write('$data ');
}
}
class LinkList {
Link first;
LinkList() {
first = null;
}
bool isEmpty() {
return first == null;
}
void insertFirst(int data) {
Link newLink = new Link(data);
newLink.next = first;
first = newLink;
}
int deleteFirst() {
Link temp = first;
first = first.next;
return temp.data;
}
void displayList() {
Link current = first;
while(current != null) {
current.displayLink();
current = current.next;
}
stdout.writeln();
}
}
class LinkStack {
LinkList list;
LinkStack() {
list = new LinkList();
}
void push(int item) {
list.insertFirst(item);
}
int pop() {
return list.deleteFirst();
}
void displayStack() {
stdout.write('Stack (top -> bottom): ');
list.displayList();
}
}
void main(List<String> args) {
LinkStack linkStack = new LinkStack();
linkStack.push(20);
linkStack.push(40);
linkStack.displayStack();
linkStack.push(60);
linkStack.push(80);
linkStack.displayStack();
linkStack.pop();
linkStack.pop();
linkStack.displayStack();
}