浙大数据结构MOOC——堆栈链表注释
2017-03-13 20:53
260 查看
typedef struct SNode *PtrToSNode; //PtrToSNode <变量名> 即相当于创建一个指向SNode结构类型的指针 struct SNode { //堆栈结构体 ElementType Data; //堆栈数据 PtrToSNode Next; //下一项地址 }; typedef PtrToSNode Stack; //Stack <变量名> 即相当于创建SNode结构类型的变量 Stack CreateStack( ) { /* 构建一个堆栈的头结点,返回该结点指针 */ Stack S; //声明SNode结构体类型指针 S = (Stack)malloc(sizeof(struct SNode)); //分配空间并将地址给S指针 S->Next = NULL; //堆栈最底部项的下一项为NULL return S; } bool IsEmpty ( Stack S ) { /* 判断堆栈S是否为空,若是返回true;否则返回false */ return ( S->Next == NULL ); } bool Push( Stack S, ElementType X ) { /* 将元素X压入堆栈S */ PtrToSNode TmpCell; //声明SNode结构体类型指针 TmpCell = (PtrToSNode)malloc(sizeof(struct SNode));//分配空间并将地址给TmpCell指针 TmpCell->Data = X; //写入数据 TmpCell->Next = S->Next; //S作为头指针不存储数据并永远处于栈顶,所以将头指针Next项地址给TmpCell的Next项 S->Next = TmpCell; //头指针指向TmpCell return true; } ElementType Pop( Stack S ) { /* 删除并返回堆栈S的栈顶元素 */ PtrToSNode FirstCell; ElementType TopElem; if( IsEmpty(S) ) { printf("堆栈空"); return ERROR; } else { FirstCell = S->Next; //栈顶指针Next项地址赋值给FirstCell(即堆栈第一项地址) TopElem = FirstCell->Data; //栈顶元素值赋值给TopElem S->Next = FirstCell->Next; //栈顶指针指向堆栈第一项的Next地址(即堆栈第二项) free(FirstCell); //释放原第一项空间 return TopElem; //返回原第一项数值 } }
相关文章推荐
- MOOC浙大数据结构 — 06-图2 Saving James Bond - Easy Version (25分)
- 数据结构(浙大MOOC)第一周
- MOOC浙大数据结构 — 08-图7 公路村村通 (30分)
- MOOC浙大数据结构 — 08-图9 关键活动 (30分)
- mooc浙大数据结构PTA习题之最大子列和问题(在线处理)
- MOOC浙大数据结构 — 03-树1 树的同构 (25分)
- 数据存储的常用结构 堆栈、队列、数组、链表
- mooc浙大数据结构PTA习题之一元多项式的乘法与加法运算
- MOOC浙大数据结构 — 08-图8 How Long Does It Take (25分)
- 数据结构与算法-----堆栈-使用链表(链式结构)实现
- MOOC浙大数据结构 — 05-树8 堆中的路径 (25分)
- mooc浙大数据结构PTA习题之最大子列和问题2(在线处理)
- 链式数据结构 单链表
- 状态管理对象器的实现,数据结构为链表
- 数据结构之堆栈
- 数据结构之链表基本操作算法演示
- 数据结构之单向链表
- 数据结构---链表
- 数据结构之链表(一)
- 数据结构 单链表运用 C语言