任何一种类都是一种数据类型,当一个数据存储结构表示为一个类时,也就成为一种数据类型。
抽象数据类型:不考虑细节的描述和实现。
//用链表实现栈和队列
//link节点实现
public class Link {
public long value;
public Link next;
public Link(long d){
value=d;
}
public void display(){
System.out.println(value);
}
}
//单链表实现
public class LinkList {
private Link first;
public LinkList(){
first=null;
}
public boolean isEmpty(){
return first==null;
}
public void insertFirst(long value){
Link l=new Link(value);
l.next=first;
first=l;
}
public long deleteFirst(){
long temp=first.value;
first=first.next;
return temp;
}
public void displayLink(){
Link current=first;
while(current!=null){
current.display();
current=current.next;
}
}
}
//单链表实现栈
public class LinkStack {
private LinkList list;
public LinkStack(){
list=new LinkList();
}
public void push(long d){
list.insertFirst(d);
}
public long pull(){
return list.deleteFirst();
}
public boolean isEmpty(){
return list.isEmpty();
}
public void displayStack(){
System.out.println("Stack:f->last:");
list.displayLink();
}
}
//双端链表
public class LinkflList {
private Link first;
private Link last;
public LinkflList(){
first=null;
last=null;
}
public boolean isEmpty(){
return first==null;
}
public void insertLast(long data){
Link l=new Link(data);
if(isEmpty()){
first=l;
last=l;
}else{
last.next=l;
last=l;
}
}
public long deleteFirst(){
long temp=first.value;
if(first==null){
last=null;
}else {
first=first.next;
}
return temp;
}
public void displayList(){
Link current=first;
while(current!=null){
current.display();
current=current.next;
}
}
}
//利用双端链表实现队列
public class LinkQueue {
private LinkflList list;
public LinkQueue(){
list=new LinkflList();
}
public void displayLQ(){
System.out.println("Queue:f->l");
list.displayList();
}
public void insert(long value){
list.insertLast(value);
}
public long delete(){
return list.deleteFirst();
}
}
app执行程序:
public class LinkStackApp {
public static void main(String[] args){
LinkStack ls=new LinkStack();
ls.push(12);
ls.push(32);
ls.displayStack();
ls.pull();
System.out.println("...........");
ls.displayStack();
}
}
public class LinkQueueApp {
public static void main(String[] args){
LinkQueue test=new LinkQueue();
test.insert(23);
test.insert(54);
test.insert(11);
test.delete();
test.displayLQ();
}
}