模拟 循环队列,堆

本文详细介绍了堆和循环队列的数据结构实现,包括 SqStack 和 SqQueue 的初始化、元素操作(如Push和Pop)以及各自的内存管理。通过实践巩固对数据结构的理解,适合热爱编程的学生和开发者。
摘要由CSDN通过智能技术生成

前言:之所以做这个模块,是因为上课找到书上的bug跟老师说,老师平时分给我加了俩分(卷起来了)是因为热爱数据结构,喜欢实践书中的内容加深理解,以便找出bug再加平时分。下给出模板。

#include<stdio.h> 
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define  STACKINCREMENT 10
#define SElemType int 
#define Status int 
#define OK 1
#define Error 0
typedef struct{
	SElemType *base;
	SElemType *top;
	int stacksize;
	
}SqStack;
SqStack S;
SElemType e;
Status Init_Stack(SqStack &S){
	
	S.base=( SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)) ;
	if(!S.base) return Error;
	S.top=S.base;
	S.stacksize=STACK_INIT_SIZE;
	return OK;
	
}
Status Push(SqStack &S,SElemType e){
	
	if(S.top-S.base>=S.stacksize ){
		S.base=( SElemType*)realloc(S.base,(STACK_INIT_SIZE+STACKINCREMENT)*sizeof(SElemType));
		if(!S.base) return Error;
		S.top=S.base+S.stacksize;	
		S.stacksize+=STACKINCREMENT;
	}
	
	*S.top++ =e;
	return OK;
}


Status Pop(SqStack &S,SElemType &e){
	if(S.top==S.base) return Error;
	e=*--S.top;//当前的top指向的是一个空位置  
}

 循环队列:

#include<stdio.h> 
#include<stdlib.h>
#define MAXQSIZE 100 
#define QElemType int 
#define Status int 
#define OK 1
#define Error 0

typedef struct{
	
	QElemType *base;
	int rear;
	int front;
	
	
}SqQueue;
SqQueue Q;
QElemType e;
Status Init_Queue(SqQueue &Q){
	Q.base=( QElemType*)malloc(MAXQSIZE*sizeof(QElemType)) ;
	if(!Q.base) return Error;
	Q.front=Q.rear=0;
	return OK;
}

Status Enqueue(SqQueue &Q,QElemType e){
	
	if((Q.rear+1)%MAXQSIZE==Q.front) return Error;
	Q.base[Q.rear]=e;
	Q.rear=(Q.rear+1)%MAXQSIZE;
	
	return OK;
}


Status Dequeue(SqQueue &Q,QElemType &e){
	
	if(Q.front==Q.rear) return Error;
	e=Q.base[Q.front];
	Q.front=(Q.front+1)%MAXQSIZE;
	
	return OK;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值