点击
上方蓝字
关注我

链栈
链栈,字面意思,就是用链表来实现一个栈的数据结构。
链栈动态图

链栈的结构体定义
typedef int SElemType;
typedef struct node {
SElemType data;//数据域
struct node *next;//指针域
}LinkStackNode;
入栈、出栈

1.入栈三步
S1:p->data=x;(给待插入的结p的数据域赋值)
S2: p->next=top->next;(给待插入的结点的数据域赋值,即将结点p指向当前top指向的结点)
S3:top->next=p;(将top指针移到p结点之上)
Status Push(LinkStackNode *top, SElemType x) {
// 将数据元素x压入栈top中
LinkStackNode * p;
p = (LinkStackNode *)malloc(sizeof(LinkStackNode));
if (!p) return ERROR; //申请空间失败
p->data = x;
p->next = top->next;
top->next = p; //修改当前栈顶指针
return OK;
}
2.出栈两步
S1:p=top->next;(将top指针指向的下一节点地址赋给p,p为待删除结点的地址)
S2: top->next=p->next;(将top指针下移)
Status Pop(LinkStackNode *top, SElemType *x){ 将栈top的栈顶元素弹出, 放到x所指的存储空间中
LinkStackNode * p;
p = top->next;
if (p == NULL) 栈为空
return OVERFLOW;
top->next = p->next;
*x = p->data;
free(p); // 释放存储空间
return OK;}文末
可执行文件
EXE




01

文章转载自小柯南有话说,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




