Java实现

/*
 * 泛型实现下推堆栈
 */
public class LinkedStack<T> {
    /*堆栈节点*/
    private static class Node<U> {
        U item;
        Node<U> next;

        Node() {                                            //构造方法1
            item = null;
            next = null;
        }

        Node(U item, Node<U> next) {            //构造方法2
            this.item = item;
            this.next = next;
        }
        //判断是否为空
        boolean end() {return item == null && next == null;}
    }

    private Node<T> top = new Node<T>();        //指向栈顶

    public void push(T item) {              //push操作
        top = new Node<T>(item, top);
    }

    public T pop() {                                    //pop操作
        T result = top.item;
        if (!top.end()) {
            top = top.next;
        }
        return result;
    }

    /*main函数用于测试*/
    public static void main(String[] args) {
        LinkedStack<String> lss = new LinkedStack<String>();
        for (String s : "Phasers on stun!".split(" "))
            lss.push(s);
        String s;
        while ((s = lss.pop()) != null)
            System.out.println(s);
    }
}

测试结果

stun!
on
Phasers

C实现

typedef struct stack
{
    int data;
    struct stack*next;
}stack;

static stack* top;

int is_empty()
{
    return top==NULL;
}

void push(int a)
{
    stack*p;
    p=(stack*)malloc(sizeof(stack));
    p->data=a;
    p->next=top;
    top=p;
}

void pop()
{
    stack* q;
    q=top;
    top=top->next;
    free(q);
}

lifehack
134 声望6 粉丝