1.队列
2.队列实现
2.1队列数据结构
2.1.1 队列头
typedef struct quene_header
{
int quene_length; //队列长度
Seq_Node* front;
}*PtrSeqHeader;
2.1.2 队列节点
typedef struct quene_node
{
int data;
struct quene_node * next;
}Seq_Node,*PtrSeqNode;
2.2 函数实现
2.2.1 创建队列
//创建空队列
int create_quene(PtrSeqHeader &header)
{
header = (PtrSeqHeader)malloc(sizeof(struct quene_header));
if(NULL==header)
{
printf("create quene faild \n");
return 1;
}
memset(header,0,sizeof(struct quene_header));
return 0;
}
2.2.2 添加数据(入队)
int quene_push(PtrSeqHeader &header,int data)
{
Seq_Node* node;
Seq_Node* temp;
if(header == NULL)
{
printf("quene not exist \n");
return 1;
}
node=(Seq_Node*)malloc(sizeof(struct quene_node));
if(node==NULL)
{
printf("create node faild \n");
return 1;
}
memset(node,0,sizeof(struct quene_node));
node->data=data;
if(header->front)
{
temp=header->front;
while(temp->next)
{
temp=temp->next;
}
temp->next=node;
}
else
{
header->front=node;
}
header->quene_length++;
return 0;
}
2.2.2 删除数据(出队)
int quene_pop(PtrSeqHeader &header)
{
struct quene_node* temp;
if(header->quene_length==0)
{
printf("quene is empty \n");
return 1;
}
temp=(struct quene_node*)header->front;
header->front=temp->next;
free(temp);
return 0;
}
2.2.2 打印队列数据(遍历)
void display_quene(PtrSeqHeader &header)
{
PtrSeqNode temp;
temp=header->front;
do
{
printf("the data is %d \n",temp->data);
temp=temp->next;
}while(temp);
}
3.测试实现
3.1 效果测试
void main()
{
PtrSeqHeader header=0;
int i=0;
int data[10]={5,6,7,9,1,2,3,4,0,8};
//创建队列
create_quene(header);
//数据依次入队
for(i=0;i<10;i++)
{
quene_push(header,data[i]);
}
//打印队列
display_quene(header);
printf("\n\n");
//出队 打印
quene_pop(header);
display_quene(header);
printf("\n\n");
quene_pop(header);
quene_pop(header);
display_quene(header);
getchar();
}
3.2 记录笔记
报错:“CRT detected that the application wrote to memory after end of heap buffer”
原因:malloc申请的节点空间,未完全memset
735

被折叠的 条评论
为什么被折叠?



