链表实现栈的结构

来源:互联网 发布:ketchup 2017 for mac 编辑:程序博客网 时间:2024/06/05 12:50
//节点定义为struct  node{    int data;    node* next;};//定义栈结构struct  Stack{    node  head;    int length;};//定义相关函数:void init(Stack* stk);//初始化void  push(Stack* stk,  int data);  //推入一个数据int  top(Stack* stk);  // 顶部数据void pop(Stack* stk); // 弹出一个数据int length( Stack* stk ); // 长度void discard(Stack* stk);//释放空间int main(){    Stack stk;    init(&stk);    push(&stk,1);    if(length(&stk)>0)    {        cout<<top(&stk)<<endl;        pop(&stk);    }    discard(&stk);    return 0;}void init(Stack* stk){    stk->head= {0};    stk->length=0;}void push(Stack* stk,int data){    node* obj=new node;    obj->data=data;    obj->next=NULL;    obj->next=stk->head.next;    stk->head.next=obj;    stk->length++;}int top(Stack* stk){    return stk->head.next->data;}void pop(Stack* stk){    node* p=stk->head.next;    stk->head.next=p->next;    delete p;    stk->length--;}int length(Stack* stk){    return stk->length;}void discard(Stack* stk){    node* p=stk->head.next;    while(p)    {        node* q=p;        p=p->next;        delete q;    }}

原创粉丝点击