链栈

    技术2022-07-10  151

    链栈:

    栈空状态:lst->next==NULL;
    栈满状态:不存在栈满状态(假设内存无限大的情况下不存在,一般可这么认为)

    代码如下:

    #include<iostream> using namespace std; typedef struct LNode { int data; struct LNode* next; }LNode; void initStack(LNode*& lst) //lst要改变 用引用型 { lst = (LNode*)malloc(sizeof(LNode)); lst->next = NULL; } int isEmpty(LNode* lst) //判断栈空代码 { if (lst->next == NULL) return 1; else return 0; } //进栈代码 void push(LNode* lst, int x) { LNode* p; p = (LNode*)malloc(sizeof(LNode)); //为进栈元素申请结点空间 p->next = NULL; p->data = x; p->next = lst->next; lst->next = p; } //出栈代码 int pop(LNode* lst, int& x) { LNode* p; if (lst->next == NULL) //栈空则不能出栈,返回0 return 0; p = lst->next; x = p->data; lst->next = p->next; free(p); return 1; } void ShowLNode(LNode* lst) { while (lst->next) { cout << lst->next->data << " "; lst = lst->next; } } int main() { LNode* L = (LNode*)malloc(sizeof(LNode)); initStack(L); push(L, 1); push(L, 2); push(L, 3); ShowLNode(L); cout << "出栈后" << endl; int x=0; pop(L,x); ShowLNode(L); return 0; }

    运行结果:

    Processed: 0.011, SQL: 9