主函数
#include <stdio.h>
#include"./04_linkqueue.h"
int main(int argc, const char *argv[])
{
linkpos*pos=create_linkqueue();
insertend_linkqueue(pos,5);
insertend_linkqueue(pos,23);
insertend_linkqueue(pos,78);
insertend_linkqueue(pos,45);
insertend_linkqueue(pos,12);
show_linkqueue(pos);
dataType num=deletehead_linkqueue(pos);
show_linkqueue(pos);
return 0;
}
头文件
#ifndef __func_H__
#define __func_H__
typedef int dataType;
union msg{
dataType data;
int len;
};
typedef struct node{
union msg text;
struct node *next;
}linkQueue;
typedef struct
{
linkQueue *rear;
linkQueue *front;
}linkpos;
linkpos*create_linkqueue();
void insertend_linkqueue();
void show_linkqueue();
dataType deletehead_linkqueue();
#endif
封装函数
#include <stdio.h>
#include <stdlib.h>
#include "./04_linkqueue.h"
//创建队列
linkpos*create_linkqueue()
{
linkpos*pos=(linkpos*)malloc(sizeof(linkpos));
pos->front=(linkQueue*)malloc(sizeof(linkQueue));
if(pos->front==NULL)
{
printf("队列创建失败\n");
return NULL;
}
pos->front->next=NULL;
pos->front->text.len=0;
pos->rear=pos->front;
return pos;
}
//尾插法
void insertend_linkqueue(linkpos*pos,dataType num)
{
linkQueue*temp=(linkQueue*)malloc(sizeof(linkQueue));
if(NULL==temp)
{
printf("创建结点失败\n");
return;
}
temp->next=NULL;
temp->text.data=num;
temp->next=pos->rear->next;
pos->rear->next=temp;
pos->front->text.len++;
}
//遍历
void show_linkqueue(linkpos*pos)
{
linkQueue*p=pos->front;
while(p->next!=NULL)
{
p=p->next;
printf("%d ",p->text.data);
}
printf("\n");
}
//头删
dataType deletehead_linkqueue(linkpos*pos)
{
linkQueue *p=pos->front->next;
dataType num=p->text.data;
pos->front->next=p->next;
free(p);
p=NULL;
pos->front->text.len--;
return num;
}