您的位置:首页 > 其它

队列 入队,插入,出队,是否队空,队元元素,清空,打印

2017-11-22 18:22 351 查看
#pragma once
#include <windows.h>

typedef struct KEEP  //
{
int index;
char* name;
KEEP* next;

}KEEP;

typedef struct QUEUE  //
{
int size;
KEEP*  front;
KEEP*  back;

}QUEUE;

/////////////////////上述为头文件////////////////////////////
bool push_back(QUEUE* queue, KEEP keep) //入队
{
KEEP* one = (KEEP*)malloc(sizeof(KEEP));
one->index = keep.index;
(char*)(one->name) = (char*)malloc(8 * sizeof(char));
one->name = keep.name;
KEEP *q = queue->back;
if (queue->front== NULL)
{
queue->front = one;          //
queue->back = one;
queue->size++;
return true;
}
else
{
q->next = one;
queue->back = one;
one->next = NULL;

queue->size++;
return true;
}

}
bool insert(QUEUE* queue, int index,char* name)//插入
{
KEEP keep = {0};
keep.index = index;
(char*)(keep.name) = (char*)malloc(8 * sizeof(char));
strcpy(keep.name, name);
push_back(queue, keep);
return true;

}
bool pop_front(QUEUE*queue)//出队
{

KEEP* p = queue->front;
queue->front = p->next;
free(p);
return true;

}
bool empty(QUEUE queue)//是否队空
{
KEEP *p = queue.front;
if (p == NULL)
{
return 0;
}
else
{
return 1;
}

}
int size(QUEUE queue)   //队员元素
{
return printf("%d", queue.size);
}
int clear(QUEUE* queue)//清空
{
KEEP *p = queue->front;
KEEP *q = queue->front;
for (p; p!=NULL;)
{
p=p->next;
free(q);
q = p;
queue->size--;
}
queue->front = NULL;
queue->back = NULL;
return 0;
}

void show(QUEUE queue)  //打印
{
KEEP *p= queue.front;
for (p = queue.front; p!=NULL; p = p->next)
{
printf("%s %d\n", p->name, p->index);

}

}

void main()
{
QUEUE queue = { 0 };  //定义一个QUEUE结构体类型的变量queue,方便我们传数据
insert(&queue, 12, "王五");//插入数据,因为插入是QUEUE* 类型,因此需要加上取值符&
insert(&queue, 14, "张三");
insert(&queue, 15, "李二");
insert(&queue, 16, "liu二");
show(queue);
putchar('\n');
pop_front(&queue);
pop_front(&queue);
pop_front(&queue);
show(queue);
printf("%d\n", empty(queue));
size(queue);
putchar('\n');
clear(&queue);
size(queue);
printf("%d\n", empty(queue));
getchar();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐