重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
伪代码,表示在被调函数体内的lq和主调函数体内的lq是同一个变量。
成都创新互联是一家集网站建设,贵定企业网站建设,贵定品牌网站建设,网站定制,贵定网站建设报价,网络营销,网络优化,贵定网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
根据main函数,void lq(int *p);这语句是定义lq函数的,真正调用lq函数的语句是:lq(a);
所以只调用了一次。
函数scanf格式化读取输入字符、数字的时候,只读取固定大小的数据,多余的数据(换行符,多输入的字符就留在了输入流中),继续作为输入。
void main()
{
QueptrTp lq;
int n;
char ch;
InitQueue(lq);
while(1)
{
printf("\n请输入命令:");
scanf("%c",ch);
fflush(stdin); //刷新缓冲区,清除缓冲区中多余的字符、换行符
/*if(ch90)
{
ch=ch-32;
}*/
switch(toupper(ch))
{
case 'A':
printf("输入病历号\n");
scanf("%d",n);
fflush(stdin);//刷新缓冲区,清除缓冲区中多余的字符、换行符
EnQueue(lq,n);
break;
case 'N':
if(!EmptyQueue(lq))
{
OutQueue(lq,n);
printf("病历号为%d的病人就诊",n);
}
else
printf("无病人等待就诊\n");
break;
case 'Q':
printf("排队等候的病人依次就诊\n");
break;
}
if(toupper(ch)=='Q')
{
while(!EmptyQueue(lq))
{
OutQueue(lq,n);
printf("病历号为%d的病人就诊\n",n);
}
break;
}
}
}
vc下的程序,适当更改下
#include stdio.h
#include stdlib.h
typedef char ElemType;
//定义链队列
typedef struct lnode
{
ElemType data;
struct lnode *next;
}LNode;//定义一个普通链表
typedef struct
{
LNode *front;
LNode *rear;
}LQueue;//将头尾指针封装在一起的链队
//初始化链队列,创建一个带头节点的空对
LQueue* Init_LQueue()
{
LNode *p;//定义为链表指针
LQueue *q;
p=(LNode*)malloc(sizeof(LNode));
if(p==NULL)
{
printf("malloc error\n");
return NULL;
}
q=(LQueue*)malloc(sizeof(LQueue));
if(q==NULL)
{
free(p);
printf("malloc error\n");
return NULL;
}
p-next=NULL;
q-front=q-rear=p;
return q;
}
//链队列入对
int In_LQueue(LQueue *q,ElemType x)
{
LNode *p;//链表指针
p=(LNode*)malloc(sizeof(LNode));//开辟新空间
if(p==NULL)
{
printf("malloc error\n");
return 0;
}
p-data=x;
p-next =NULL;//链尾置空
q-rear-next=p;//对尾指向链尾
q-rear=p;//对尾后移
return 1;
}
//链队列出对
int Out_LQueue(LQueue *q,ElemType x)
{
LNode *p;
if(q-front == q-rear)
{
printf("链队列为空!不能出对!\n");
return 0;
}
p=q-front-next;//找到对头第一个有值节点
x=p-data;//取出数值
q-front-next=p-next;
free(p);
if(q-front-next == NULL)//当出对为最后一个节点时,修改头尾指针.
q-front = q-rear;
return 1;
}
//求队列的长度
int LQueueLen(LQueue *q)
{
int length=0;
LNode *p;
p=q-front;
while(p!=q-rear)
{
length++;
p=p-next;
}
return length;
}
//打印链队列
int Print_lq(LQueue *q)
{
LNode *p;
p=q-front-next;//注意在链头那里不存放数据,从后面开始算
if(q-front == q-rear)
{
printf("链队列为空!\n");
return 0;
}
while(p!=NULL)
{
printf("%c,",p-data);
p=p-next;
}
printf("\n");
return 1;
}
//释放链队列
int Free_LQueue(LQueue *q)
{
LNode *p,*t;
p=q-front-next;
while(p!=NULL)
{
t=p-next;
free(p);//释放链表
p=t;
}
q-front=q-rear=NULL;//置队列为空
return 1;
}
int main()
{
int i;
ElemType x;
LQueue *lq=NULL;
lq=Init_LQueue();//形成对头
printf("链队列入对...\n");
for(i=0;i10;i++)
{
In_LQueue(lq,i+'a');
}
//打印链队列
Print_lq(lq);
//链队列长度
printf("链队列长度:%d\n",LQueueLen(lq));
//链队列出对
printf("链队列出对...\n");
Out_LQueue(lq,x);
printf("链队列出对数值为:%c\n",x);
//打印链队列
Print_lq(lq);
//释放链队列
Free_LQueue(lq);
getchar();
return 0;
}