自行比对这两个函数吧
void insert_link(struct linkqueue *ps,int val)//完成队列的增加。{
struct node * pnew=(struct node*)malloc(sizeof(struct node))//申请一个节点
pnew->data=val//将要放入队列的值赋给节点的数据域
pnew->next=NULL
// pnew=ps->rear->next//将rear指向新的节点,并将新的节点的指针域置空。
ps->rear->next=pnew
ps->rear=ps->rear->next
// pnew->next=NULL
}
void traverse_link(struct linkqueue *ps)//完成队列遍历
{
struct node *p=ps->front->next//申请一个临时指针变量,以完成队列遍历。因为头节点没有存放数据所以让指针指向front下一个节点
while(/*p->next*/p!=NULL) { //当指针指向的节点的指针域不为空时就继续下移,并且输出本节点的数据
printf("%d ",p->data)
p=p->next
}
}
C语言的链表与队列是两种不同的概念:
链表是一种数据的存储方式,其保存的数据在内存中是不连续的,采用指针对数据进行访问;
队列是一种数据结构,其特点是先进先出,后进后出;
队列的存储方式可以使用线性表进行存储,也可以使用链表进行存储。
SQQUEUE的第一个元素elemtype
*elem其实是指向了一个数组,该数组中存储着类型为elemtype的元素,然后front和rear就标识了队首和队尾元素对应的数组下标。
typedef
struct _Point{
int x,y
}Point
#defineelemtype
Point//这个elemtype可以是任意你自己定义的结构,可以是结构体,也可以是简单数据类型
elemtype
array[10]={0}//这个是队列的数据结构,在这里是一个Point数组
SQQUEUE
queue={0}
queue.elem=array//这样array中的元素就是queue中的元素了。
queue.front=queue.rear=queue.size=0