C 实现链式栈codeblocks和VC2012通过

来源:互联网 发布:天津中兴研究所 知乎 编辑:程序博客网 时间:2024/05/08 12:40
#include <stdio.h>#include<stdlib.h>#define MAX_LEN 10010typedef struct node{    char data;    struct node *next;}Node;typedef struct liStack{    Node *top;}LiStack;void initStack(LiStack *s);void destoryStack(LiStack *s);void push(LiStack *s,char c);void pop(LiStack *s);void getTop(LiStack *s);void lenStack(LiStack *s);void dispStack(LiStack *s);void emptyStack(LiStack *s);int main(){    LiStack *t;t=(LiStack*)malloc(sizeof(LiStack));    initStack(t);    push(t,'a');    push(t,'b');    dispStack(t);    lenStack(t);    pop(t);    getTop(t);    pop(t);    //pop(t);    emptyStack(t);    destoryStack(t);    //free(t);    return 0;}void initStack(LiStack *s){s->top=NULL;}void destoryStack(LiStack *s){    Node *p,*q;    p=q=s->top;    free(s);    while(p!=NULL)    {        q=p->next;        free(p);        p=q;    }    free(p);    free(q);    printf("des ok\n");}void push(LiStack *s,char c){    Node *p;    p=(Node *)malloc(sizeof(Node));    p->data=c;    p->next=s->top;    s->top=p;    printf("push ok!\n");}void pop(LiStack *s){    char c;    Node *p;    if(s->top!=NULL)    {        p=s->top;        s->top=s->top->next;        c=p->data;        printf("%c\n",c);    }}void getTop(LiStack *s){    char c;    if(s->top!=NULL)    {        c=s->top->data;        printf("current top:%c\n",c);    }}void lenStack(LiStack *s){    int n=0;    Node *p=s->top;    while(p!=NULL)    {        n++;        p=p->next;    }    printf("%d\n",n);}void dispStack(LiStack *s){    Node *p=s->top;    printf("top->");    while(p)    {        printf("%c->",p->data);        p=p->next;    }    printf("NULL\n");}void emptyStack(LiStack *s){    if(s->top==NULL)        printf("it's empty\n");}
中间有个测试pop函数的调用。可以根据具体的要求更爱参数。要学好数据结构真的是需要动手做,自己慢慢调试。研一的菜鸟。。。
原创粉丝点击