📄 linkqueue.cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct qnode
{
int data;
struct qnode *next;
}Linkqlist;//链队列结点的类型
typedef struct
{
struct qnode *front;//头指针
struct qnode *rear;//尾指针
}Linkqueue;//将头,尾指针封装在一起的链队列
void LinkqueueInit(Linkqueue *p)
{
p->front=(Linkqlist *)malloc(sizeof(Linkqlist));
p->rear=p->front;
p->front->next=NULL;
}
void LinkqueueIn(Linkqueue *p,int x)
{
p->rear->next=(Linkqlist *)malloc(sizeof(Linkqlist));
p->rear=p->rear->next;
if (p->rear)
{
p->rear->data=x;
p->rear->next=NULL;
}
}
void LinkqueueOut(Linkqueue *p)
{
Linkqlist *q;
int e;
if (p->front==p->rear)
{
printf("队列已空");
exit(0);
}
else
{
q=(p->front)->next;
(p->front)->next=q->next;
e=q->data;
printf("出列元素:%d",e);
}
if(p->rear==q)
p->rear=p->front;
if (q)
{
free(q);
}
}
int LinkqueueGethead(Linkqueue *p)
{
int k;
if (p->front==p->rear)
{
return -1;
}
else
{
k=(p->front)->next->data;
return k;
}
}
void LinkqueueDestory(Linkqueue *p)
{
while (p->front)
{
p->rear=p->front->next;
free(p->front);
p->front=p->rear;
}
}
void LinkqueueDisplay(Linkqueue *p)
{
int data;
Linkqlist *q;
q=p->front->next;
printf("链队列:\n");
if (p->front==p->rear)
{
printf("链队列已空\n");
exit(0);
}
else
while (q)
{
data=q->data;
printf("%d->",data);
q=q->next;
}
}
int main()
{
int i;
int n;//队列长度
int num;//队列元素
int flag=1;//标志
char ch;
int select;//选择
int in;//新增队列元素
int gh;
Linkqueue head;
LinkqueueInit(&head);
printf("请输入链队列长度:\n");
scanf("%d",&n);
for (i=0;i<n;i++)
{
printf("请输入队列元素:\n");
scanf("%d", &num);
LinkqueueIn(&head,num);
}
LinkqueueDisplay(&head);
printf("\n");
while (flag)
{
printf("select 1 --- destory() \n");
// printf("select 2 --- empty () \n");
printf("select 3 --- LinkqueueGethead() \n");
printf("select 4 ---LinkqueueIn() \n");
printf("select 5 --- LinkqueueOut() \n");
printf("select 6 --- LinkqueueDisplay() \n");
printf("please select (1--5):");
scanf("%d",&select);
// LinkqueueDisplay()LinkqueueIn()LinkqueueOut()
// LinkqueueGethead()
switch(select)
{
case 1:
LinkqueueDestory(&head);
break;
case 3:
gh=LinkqueueGethead(&head);
printf("队头:%d\n",gh);
LinkqueueDisplay(&head);
break;
case 4:
printf("请输入新增队列元素:\n");
scanf("%d", &in);
LinkqueueIn(&head,in);
LinkqueueDisplay(&head);
break;
case 5:
LinkqueueOut(&head);
LinkqueueDisplay(&head);
break;
case 6:
LinkqueueDisplay(&head);
break;
}
printf("继续操作(Y|N):");
getchar();
ch=getchar();
if (ch=='n'||ch=='N')
{
flag=0;
}
else
flag=1;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -