#include <stdio.h>
#include <stdlib.h>
typedef struct node_x {
int data;
struct node_x *next;
}qnode;
typedef struct queue_x {
qnode *head;
qnode *rear;
}queue;
void print_queue(queue *q)
{
printf("the queue:\n");
qnode *p = q->head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int length_queue(queue *q)
{
int len = 0;
qnode *p = q->head;
while (p) {
len++;
p = p->next;
}
return len;
}
int delete_qnode(queue *q)
{
qnode *p;
int data;
if (!q->head)
return;
data = q->head->data;
p = q->head->next;
free(q->head);
q->head = p;
if (!p) q->rear = NULL;
return data;
}
void insert_qnode(queue *q, int data)
{
qnode *p, *s;
s = (qnode*)malloc(sizeof(qnode));
s->data = data;
s->next = NULL;
if (!q->rear) {
q->head = s;
} else {
q->rear->next = s;
}
q->rear = s;
}
queue * creat_queue(void)
{
queue *q;
q = (queue *)malloc(sizeof(queue));
q->head = NULL;
q->rear = NULL;
int data;
while (1) {
printf("insert a num:");
scanf("%d", &data);
if (data == 0) break;
insert_qnode(q, data);
}
return q;
}
int main(void)
{
printf("creat a queue:\n");
queue *q = creat_queue();
print_queue(q);
printf("queue length:%d\n", length_queue(q));
printf("delete a qnode :\n");
delete_qnode(q);
print_queue(q);
printf("insert a qnode 3:\n");
insert_qnode(q, 3);
print_queue(q);
return 0;
}
2008年10月17日星期五
队列:节点插入,节点删除,测长,建立
订阅:
博文评论 (Atom)
没有评论:
发表评论