|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
此时我队列已经被我销毁了 base也被释放了,为什么还可以再进行创建(creatQ)
# define MAXSIZEQ 100
typedef struct{
int *base;
int front;
int rear;
}SQueue;
void initQ(SQueue *Q) //初始化队元素。
{
Q->base=(int*)malloc(MAXSIZEQ*sizeof(int));
if(!Q->base)
{
printf("空间无法正常分配,对不起哦~\n");
}
Q->front=Q->rear=0;
}
void creatQ(SQueue *Q) //创建队元素
{
int n,i;
printf("请输入您要创建的元素个数:");
scanf("%d",&n);
if((Q->rear+1)%MAXSIZEQ==Q->front)
{
printf("该队已满了哦,你不可以插入了哦~\n");
}
for(i=0;i<n;i++)
{
printf("请输入第%d个元素:",i+1);
scanf("%d",&Q->base[Q->rear]);
Q->rear=(Q->rear+1)%MAXSIZEQ;
}
}
void showQ(SQueue *Q) //显示队元素
{
int i;
if(Q->front==Q->rear)
{
printf("不可以出队了哦 此时队空~\n");
}
for(i=0;i<Q->rear;i++)
{
printf("%d ",Q->base[Q->front]);
Q->front=(Q->front+1)%MAXSIZEQ;
}
printf("\n");
}
int lengthQ(SQueue *Q) //打印队长
{
int n;
n=(Q->rear-Q->front+MAXSIZEQ)%MAXSIZEQ;
printf("您的队长为:%d\n",n);
return 0;
}
void isempty(SQueue *Q) //判断是否是空队列
{
if(Q->rear==Q->front)
printf("此时队列是空的哦~\n");
else
printf("此时队列不为空哦~\n");
}
void destroyQ(SQueue *Q) //销毁该队列
{
free(Q->base);
Q->front=Q->rear=0;
printf("此时队列已经被销毁了哦~\n");
}
int main()
{
SQueue Q;
initQ(&Q);
creatQ(&Q);
lengthQ(&Q);
//isempty(&Q);
destroyQ(&Q);
creatQ(&Q);
printf("您队中的元素为:");
showQ(&Q);
lengthQ(&Q);
//isempty(&Q);
return 0;
}
|
-
|