该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
在线等,编写的内容是链式队列存储。这里是头文件(b5.h)
程序代码:
/*链表结点的结构体*/
typedef struct NODE_TYPE{
int data; /*数据域*/
struct NODE_TYPE *next; /*指针域 */
}QNode;
/*队列的结构体*/
typedef struct LINK_QUEUE{
QNode *front; /*队头指针*/
QNode *rear; /*队尾指针*/
}LinkQueue;
/*创建队列的函数*/
int InitQueue(LinkQueue *q){
q->front = q->rear = (QNode *)malloc(sizeof(QNode));/*开辟结点,front和rear指针都指向新开辟的结点地址*/
if(! q->front) exit(0); /*如果失败,退出*/
q->front->next = NULL; /*头结点指针域设为NULL*/
}
/*判断是否为空的函数 */
int IsEmpty(LinkQueue *q){
if(q->front&&q->rear==NULL) return 0;/*如果头尾指针都是NULL,则返回0*/
else return 1; /*否则返回1 */
}
/*插入结点元素的函数 */
int Add(LinkQueue *q,int e){
QNode *p;
p=(QNode *)malloc (sizeof(QNode)); /*创建一个队列元素的结点*/
p->data=e;
p->next = NULL;
q->rear->next = p; /*将第一个结点与第二个结点连接*/
q->rear = p; /*将虚表头里的rear指针指向当前链表的最后一个结点*/
}
/*打印链式队列的元素*/
int PrintNode(LinkQueue *q){
int i;
QNode *temp;
if(IsEmpty(&q)==0){ /*如果链式队列为空,退出*/
printf("The Queue is null!\n");
exit(0);
}
for(i=1,temp=q->front->next;temp!=NULL;i++,temp=temp->next){ /*temp的初值为第一个结点的地址(不是头结点) ,如果没遇见NULL,不断将下一个地址赋给temp*/
printf("the %dth number of the is %d\n",i,temp->data);