浙大数据结构MOOC——堆栈链表注释
来源:互联网 发布:鱼眼校正算法 opencv 编辑:程序博客网 时间:2024/05/17 09:39
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; //返回原第一项数值 }}
0 0
- 浙大数据结构MOOC——堆栈链表注释
- MOOC浙大数据结构 — 07-图4 哈利·波特的考试 (25分)
- MOOC浙大数据结构 — 08-图8 How Long Does It Take (25分)
- MOOC浙大数据结构 — 03-树2 List Leaves (25分)
- 数据结构_中国大学MOOC(慕课)——两个有序链表序列的合并问题
- 【MOOC—数据结构习题】两个有序链表序列的合并
- 数据结构——堆栈
- 数据结构——堆栈
- 浙大数据结构——二叉树
- 数据结构-堆栈-链表实现
- 数据结构笔记——堆栈
- 浙大MOOC 第七章测验
- 北理mooc题——链表合并
- 数据结构(2)——链表形式的堆栈,以及火车车厢重排问题
- 02-线性结构1 两个有序链表序列的合并——中国大学MOOC-陈越、何钦铭-数据结构-2017秋
- 数据结构——队列、堆栈和哈希表
- Java数据结构02堆栈——《精华》
- 简单数据结构实现——堆栈
- BZOJ1588[HNOI2002]营业额统计
- C++学习之计算均值和方差
- CSS基础(3)位置和高度宽度
- linux下的基本操作10(正则表达式)
- golang的md5 操作
- 浙大数据结构MOOC——堆栈链表注释
- 栈的模拟(内核为链表).c
- 单调队列
- Apache和Nginx开启Https
- 冒泡排序
- L
- golang的mysql操作
- POJ 3368
- 湿冷天扫除前挡玻璃视障 应该怎么选?