栈和队列(三)
队列的链式存储表示和实现
链队的类型定义
typedef struct qnode{char data;struct qnode *next;
}qnode,*queneptr;typedef struct{queneptr front;queneptr rear;
}linkqueue;
-
typedef struct qnode{}
:- 定义了一个名为
qnode
的结构体。 - 结构体成员包括:
char data
:一个字符类型的数据成员,用于存储队列中的数据元素。struct qnode *next
:一个指向同类型结构体的指针,用于链接队列中的节点,形成链表结构。
- 定义了一个名为
-
typedef struct{}
:- 定义了一个名为
linkqueue
的结构体。 - 结构体成员包括:
queneptr front
:一个指向qnode
结构体类型的指针,用于指向队列的队头节点。queneptr rear
:一个指向qnode
结构体类型的指针,用于指向队列的队尾节点。
- 定义了一个名为
这段代码实现了一个链式队列的数据结构,其中每个节点包含一个字符数据和指向下一个节点的指针,而linkqueue
结构体包含队头和队尾指针,用于管理整个队列
链队的初始化
void initqueue(linkqueue *q){q->front=q->rear=(queneptr)malloc(sizeof(qnode));q->front=NULL;
}
入队
void enqueue(linkqueue q,char e){queneptr p=(queneptr)malloc(sizeof(qnode));p->data=e;p->next=NULL;q.rear->next=p;q.rear=p;
}
出队
void dequeue(linkqueue q){queneptr p=(queneptr)malloc(sizeof(qnode));p=q.front->next;q.front->next=p->next;if(q.rear==p)q.rear=q.front;
}