偽代碼,表示在被調(diào)函數(shù)體內(nèi)的lq和主調(diào)函數(shù)體內(nèi)的lq是同一個變量。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),貴定企業(yè)網(wǎng)站建設(shè),貴定品牌網(wǎng)站建設(shè),網(wǎng)站定制,貴定網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,貴定網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
根據(jù)main函數(shù),void lq(int *p);這語句是定義lq函數(shù)的,真正調(diào)用lq函數(shù)的語句是:lq(a);
所以只調(diào)用了一次。
函數(shù)scanf格式化讀取輸入字符、數(shù)字的時候,只讀取固定大小的數(shù)據(jù),多余的數(shù)據(jù)(換行符,多輸入的字符就留在了輸入流中),繼續(xù)作為輸入。
void main()
{
QueptrTp lq;
int n;
char ch;
InitQueue(lq);
while(1)
{
printf("\n請輸入命令:");
scanf("%c",ch);
fflush(stdin); //刷新緩沖區(qū),清除緩沖區(qū)中多余的字符、換行符
/*if(ch90)
{
ch=ch-32;
}*/
switch(toupper(ch))
{
case 'A':
printf("輸入病歷號\n");
scanf("%d",n);
fflush(stdin);//刷新緩沖區(qū),清除緩沖區(qū)中多余的字符、換行符
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;//將頭尾指針封裝在一起的鏈隊
//初始化鏈隊列,創(chuàng)建一個帶頭節(jié)點的空對
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;//找到對頭第一個有值節(jié)點
x=p-data;//取出數(shù)值
q-front-next=p-next;
free(p);
if(q-front-next == NULL)//當出對為最后一個節(jié)點時,修改頭尾指針.
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;//注意在鏈頭那里不存放數(shù)據(jù),從后面開始算
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("鏈隊列出對數(shù)值為:%c\n",x);
//打印鏈隊列
Print_lq(lq);
//釋放鏈隊列
Free_LQueue(lq);
getchar();
return 0;
}