求求高手们帮帮我,我要实现一个以数组方式的链栈,想了很长的时间不知道怎么实现,请高手们给点儿建议,感激不尽....!!!

解决方案 »

  1.   

    实现一个以数组方式的链栈?
    不是很清楚你的意思,用LinkedList来实现栈比较方便些
    呵呵,可以把需求描述的清晰一些
      

  2.   

    栈用数组实现,要求自定义链表,不允许使用LinkedList....实现栈遍历,进栈,出栈,判空等操作....
      

  3.   

    何必自己为难自己...还专门说不让用LinkedList?
      

  4.   

    我也不想为难自己,我也想用linkedlist调用几个函数完成它.....可是题目确实是这样的.....求求高手们帮帮我吧...
      

  5.   

    模仿linkedlist把你想用的方法实现一下,只是类中的存储结构是数组就行了,这个似乎不难吧
      

  6.   

    看看栈的API,只用把栈的那几个方法用数组实现就可以了,pop() .. push()..   
    先进后出,后进先出。最先入栈的就是加到数组[0],取就只能取 数组[length-1]的 ,套上循环。
    只能给你简单提提思想了。。很好实现的
      

  7.   

    可以参考LinkedList源代码。
    不过用数组写链栈我不太明白什么意思。我写过线形和链的,
    一个指针head指向栈顶,其他都按照链表的来写,一个数据结构里有值和指向下一个的指针。
    然后封装两个public的方法put()和get(),
    只能从栈顶插入和读取,然后相应的移动head。
    开始的时候head为空,在put和get里加入一个head为空的条件判断。要是用数据写线性的,就是把链表写成线性的,差不多。你说的我真是不知道怎么回事。
      

  8.   

    指针就是“对象的引用”了嘛~~
    不过java里的“引用”,修改了一些原来c里面指针不太合适的地方。
    我水平不高,你看看这样合不合你要求。
    用数组好象可以不用引用也可以,直接定义个栈顶head作为栈顶元素的下标就行。
    private int head = 0; //
    private int [] myLinkedList = new int[10];
    private int max = 10;
    public void put(int num){
      if(head == 10){ …… } //这里可以仿照arraylist来写个可以自动扩充容量并且复制数据的函数
      myLinkedList[head] = num;
      head++;
    }
    public int get(){
      if(head == 0)return 0; //栈空返回 0 ,也可以自己定义 -1或者别的
      head--;
      return myLinkedList[head+1];
    }
      

  9.   

    用linkedlist可以轻松实现堆栈和队列
    用放置第一个元素
    然后又取最后一个元素或第一个元素就可以实现堆栈和队列
      

  10.   

    你把LinkedList的源代码看看不就得了
    LinkedList的本质它还是数组实现的阿
      

  11.   


    设置为动态可扩容的数组嘛 :
    if(data.length-1]!=null){      //判断空间是否已满 
      Object[] ob = new Object[data.length+10];  //如果空间已满,则扩容 
      System.arraycopy(this.data,0,ob,0,this.data.length); 
      this.data = ob;  //让之前数组的引用指向扩容后的新数组; 
    }    
      

  12.   

    class StackX
    {
    private int maxSize;
    private long[]stackArray;
    private int top;
    public stackX(int s)
    {
    maxSize=s;
    stackArray=new Long[maxSize];
    top=-1;
    }
    public void push(long j)
    {
    stackArray[++top]=j;
    }
    public long pop()
    {
    return stackArray[top--];
    }
    public long peek()
    {
    return stackArray[top];
    }
    public boolean isFull()
    {
    return (top==maxSize-1);
    }
    public boolean isEmpty()
    {
    return (top==-1);
    }
    }