大学生-程序元,开始记录生活
南枫在这里和大家一同进步,一同交流学习
注:代码实现用Visual Studio 2019
#define _CRT_SECURE_NO_WARNINGS #include#include typedef int ElemType; typedef struct linkNode { ElemType data; struct linkNode* next; }linkNode; typedef struct { linkNode* front, * rear;//链表头,链表尾 }linkQueue; //删除元素 bool DeQueue(linkQueue &Q,ElemType &x) { if (Q.front == Q.rear) return false;//队列为空 linkNode* p = Q.front->next;//头结点什么都没存,所以头结点的下一个结点才有数据 x = p->data; Q.front->next = p->next;//断链 if (Q.rear == p)//删除的是最后一个元素 { Q.rear = Q.front;//队设置为空 } free(p); return true; } //判断是否为空 bool IsEmpty(linkQueue Q) { if (Q.front == Q.rear) { return true; } else { return false; } } //入队,尾部插入法 void EnQueue(linkQueue& Q, ElemType x) { linkNode* s = (linkNode*)malloc(sizeof(linkNode)); s->data = x; s->next = NULL; Q.rear->next = s;//rear始终指向尾部 Q.rear = s; } //初始化 void InitQueue(linkQueue& Q) { Q.front = Q.rear = (linkNode*)malloc(sizeof(linkNode));//头和尾指向同一个结点 Q.front->next = NULL; } int main() { linkQueue Q; bool ret; ElemType element;//存储出队元素 InitQueue(Q); EnQueue(Q, 3); EnQueue(Q, 4); EnQueue(Q, 5); EnQueue(Q, 6); EnQueue(Q, 7); ret = DeQueue(Q, element); if (ret) { printf("出队成功,元素值为 %dn", element); } else { printf("出队失败n"); } return 0; }
如果您感觉这篇文章有帮助,希望大家可以点个赞,支持一下。
您的支持,就是我的动力。



