69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
typedef struct node
{
char data;
struct node *next;
}Qnode,*Qlink;
typedef struct
{ Qnode *front,*rear;
}linkqueue,*link;
void Creatqueue(link q)
{
q->front=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
q->rear=q->front;
}
void Clearqueue(link q)
{
q->front=q->rear=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
}
int Emptyqueue(link q)
{
if(q->front==q->rear) return 1;
else return 0;
}
void Enqueue(link q,char e)
{
Qlink p;
p=(Qlink)malloc(sizeof(Qnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
char Dequeue(link q)
{
Qlink p;
if(Emptyqueue(q)) return NULL;
else
{
p=q->front;
q->front=p->next;
free(p);
return q->front->data;
}
}
void main()
{
char e,flag=0;link S;
Creatqueue(S);
do
{
printf("请输入字符X\n");
e=getchar();
switch(e)
{
case '0':Dequeue(S);break;
case '@':while(S->front!=S->rear)
{
printf("%c",Dequeue(S));
}
printf("%c",Dequeue(S));
flag=1;
break;
default:Enqueue(S,e);
}
}
while(flag==0);
}
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
char data;
struct node *next;
}Qnode,*Qlink;
typedef struct
{
Qnode *front,*rear;
}linkqueue,*link;
void Creatqueue(link q)
{
q->front=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
q->rear=q->front;
}
void Clearqueue(link q)
{
q->front=q->rear=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
}
int Emptyqueue(link q)
{
if(q->front==q->rear)
return 1;
else
return 0;
}
void Enqueue(link q,char e)
{
Qlink p;
p=(Qlink)malloc(sizeof(Qnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
char Dequeue(link q)
{
Qlink p;
if(Emptyqueue(q)) return 0; //NULL 不是char 类型
else
{
p=q->front;
q->front=p->next;
free(p);
return q->front->data;
}
}
int main(void)
{
char e,flag=0;
link S;
S = malloc(sizeof(linkqueue)); //一定要分配空间
Creatqueue(S);
do
{
printf("请输入字符X\n");
e = getchar();
while(getchar() != '\n') //清空缓冲区
;
switch(e)
{
case '0':Dequeue(S);break;
case '@':while(S->front!=S->rear)
{
printf("%c",Dequeue(S));
}
printf("%c",Dequeue(S));
flag=1;
break;
default:Enqueue(S,e);
}
}
while(flag == 0);
return 0;
}