数据结构——第二讲、线性结构(6)

来源:互联网 发布:淘宝怎么搜片子 编辑:程序博客网 时间:2024/05/16 04:42

2.2.3 堆栈的链式存储
用单向链表实现堆栈,只能在链头操作(一个链表节点不知道它的上一个节点在哪里)

typedef struct SNode *Stack;struct SNode{    ElementType Data;    Stack NEXT;};

创建一个空栈

//这个头结点不代表任何元素,一直存在在堆栈头,只是为了方便堆栈的插入删除操作。Stack CreateStack(){    Stack s = (Stack)malloc(sizeof(struct SNode));    S->NEXT = NULL;    return s;}//可以通过判断头结点的NEXT是否为NULL来得知是否为空。int IsEmpty(Stack s){//为空返回1,不空返回0    if(s->NEXT == NULL)        return 1;    else        return 0;}

入栈

void Push(ElementType x, Stack s){    Stack p = (Stack)malloc(sizeof(struct SNode));    p->Data = x;    p->NEXT = s->NEXT;    s->NEXT = p;}

出栈

Stack Pop(Stack s){    if(IsEmpty(s)){        printf("空栈!");        return NULL;    }else{        Stack p = s->NEXT;        s->NEXT = p->NEXT;        free(p);        return s->NEXT;    }}
原创粉丝点击