数据结构的链栈

来源:互联网 发布:jquery调用js函数 编辑:程序博客网 时间:2024/06/06 02:36
# include <stdio.h># include <stdlib.h>typedef char NodeData;//链栈typedef struct Node{    NodeData data;    struct Node *next;}StackNode;typedef struct{    StackNode *top;}LinkStack;/*置栈空*/void initStack(LinkStack *ls){ls->top=NULL;}/*判栈空*/int isStackEmpty(LinkStack *ls){    return ls->top==NULL;}/*进栈*/void pushStack(LinkStack *ls,NodeData nodedata){    StackNode *p;    p=(StackNode *)malloc(sizeof(StackNode));    p->data=nodedata;    p->next=ls->top;    ls->top=p;}/*出栈*/NodeData popStack(LinkStack *ls){    StackNode *p=ls->top;    NodeData popNode=ls->top->data;    ls->top=ls->top->next;    free(p);    return popNode;}/*打印栈*/void printStack(LinkStack *ls){    int i=0;    StackNode *node;    node=ls->top;    while(node->next!=NULL)    {        node=node->next;        printf("%d = %c\n",i,node->data);        i++;    }}/* LinkStack结构类型的定义是为了方便在函数体中修改top指针本身通过修改指向LinkStack的top指针来控制入栈和出栈 *//* 是通过指针参数修改指针所指内容的典型用法 */void main(){    LinkStack *ls;    char inData;    ls=(LinkStack *)malloc(sizeof(LinkStack));    initStack(ls);    //入栈    printf("请输入data\n");    while(inData != '\n')    {        scanf("%c",&inData);        pushStack(ls,inData);        printf("%c\n",inData);    }    printf("linkStack:\n");    //打印栈元素    printStack(ls);    printf("pop stack\n");    //出栈    popStack(ls);    printStack(ls);}

原创粉丝点击