//链表实现堆栈
class Link{
public int data;
public Link next;
public Link(int d){
data=d;
}
public void showLink(){
System.out.println(data);
}
}
class LinkStack{
private Link first;
public void push(int data){//有序链表
Link current=first;
Link prior=current;
Link newLink=new Link(data);
if(first==null){
newLink.next=first;
first=newLink;
}
else{
while(current!=null){
if(current.data<newLink.data){
prior=current;
current=current.next;
}
else{
newLink.next=current;
prior.next=newLink;
break;
}
}
if(current==null){
newLink.next=current;
prior.next=newLink;
}
}
}
public boolean isEmpty(){
return first==null;
}
public Link pop(){
if(isEmpty())
return null;
else{
Link tmp=first;
first=first.next;
return tmp;
}
}
public void showStack(){
Link current=first;
while(current!=null){
current.showLink();
current=current.next;
}
}
}
public class Test{
public static void main(String[] args){
LinkStack ls=new LinkStack();
ls.push(10);
ls.push(20);
ls.push(15);
ls.push(30);
ls.showStack();
}
}
class Link{
public int data;
public Link next;
public Link(int d){
data=d;
}
public void showLink(){
System.out.println(data);
}
}
class LinkStack{
private Link first;
public void push(int data){//有序链表
Link current=first;
Link prior=current;
Link newLink=new Link(data);
if(first==null){
newLink.next=first;
first=newLink;
}
else{
while(current!=null){
if(current.data<newLink.data){
prior=current;
current=current.next;
}
else{
newLink.next=current;
prior.next=newLink;
break;
}
}
if(current==null){
newLink.next=current;
prior.next=newLink;
}
}
}
public boolean isEmpty(){
return first==null;
}
public Link pop(){
if(isEmpty())
return null;
else{
Link tmp=first;
first=first.next;
return tmp;
}
}
public void showStack(){
Link current=first;
while(current!=null){
current.showLink();
current=current.next;
}
}
}
public class Test{
public static void main(String[] args){
LinkStack ls=new LinkStack();
ls.push(10);
ls.push(20);
ls.push(15);
ls.push(30);
ls.showStack();
}
}