堆的实现
来源:互联网 发布:mac怎么安装steam 编辑:程序博客网 时间:2024/06/05 04:43
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node * pNext;
}NODE,*PNODE;
typedef struct Stack
{
PNODE pTop;
PNODE pBotton;
}STACK,*PSTACK;
void init(PSTACK pS)
{
pS->pTop = (PNODE)malloc(sizeof(NODE));
if (NULL == pS->pTop)
{
cout << "动态内存分配失败" << endl;
exit(-1);
}
else
{
pS->pBotton = pS->pTop;
pS->pTop->pNext = NULL;
}
}
void push(PSTACK pS, int val)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
{
cout << "动态内存分配失败" << endl;
exit(-1);
}
pNew->data = val;
pNew->pNext = pS->pTop;
pS->pTop = pNew;
return;
}
void traverse(PSTACK pS)
{
PNODE p = pS->pTop;
while (p != pS->pBotton)
{
cout << p->data << " ";
p = p->pNext;
}
return;
}
bool empty(PSTACK pS)
{
if (pS->pBotton == pS->pTop)
return true;
else
return false;
}
bool pop(PSTACK pS, int * val)
{
if (empty(pS))
{
return false;
}
else
{
PNODE r = pS->pTop;
*val = r->data;
pS->pTop = r->pNext;
free(r);
r = NULL;
}
return true;
}
void clear(PSTACK pS)
{
while (pS->pTop != pS->pBotton)
{
PNODE r = pS->pTop;
pS->pTop = r->pNext;
free(r);
r = NULL;
}
/*if (empty(pS))
{
return;
}
else
{
PNODE p = pS->pTop;
PNODE q = NULL;
while (p != pS->pBotton)
{
q = pS->pTop->pNext;
free(p);
p = q;
}
pS->pTop = pS->pBotton;
}*/
}
int main()
{
STACK S;
int pVal;
init(&S);
push(&S,1);
push(&S,2);
push(&S, 3);
push(&S, 4);
push(&S, 5);
push(&S, 6);
push(&S, 7);
push(&S, 8);
traverse(&S);
if (pop(&S, &pVal))
{
cout << "出栈成功" << "出栈的是:" <<pVal<<endl;
}
else
{
cout << "出栈失败" << endl;
}
traverse(&S);
clear(&S);
traverse(&S);
system("pause");
return(0);
}
- 堆结构的实现
- 最小堆的实现
- 最大堆的实现
- 堆排序的实现
- 最大堆的实现
- 最小堆的实现
- 堆排序的实现
- 最小堆的实现
- 堆排序的实现
- 堆排序的实现
- 堆排序的实现
- 堆的实现
- 堆排序的实现
- 堆排序的实现
- 二叉堆的实现
- 堆排序的实现
- 堆排序的实现
- 堆排序的实现
- 大学,学会这样上网才有意义!
- 数据结构:图(邻接多重表存储 c++实现)
- 还原 IE 源查看器
- linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
- 算法学习-最短路径算法
- 堆的实现
- Android : ExpandableListView 使用方法
- 猫猫学IOS(三十八)UI之核心动画简介
- Swift学习收录
- CXF获取客户端IP
- @Component 单例 多例
- php选择排序法
- Codeforces Round #302 (Div. 2) (ABCD题解)
- Confluence5.4 最新版的安装&破解&汉化