第三章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章作业
1、顺序栈空、栈满条件
2、链栈栈空、栈满条件
3、循环队列队空、队满条件,如何表示队列中数据元素的个数
4、链队列队空、队满条件
5、以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。
Int Push(SqStackTp *sq,DataType x)
{ if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);}
else{________________:
________________=x;
return(1);}
}
6、以下运算实现在顺序栈上的退栈,请在_______________用适当句子予以填充。
Int Pop(SqStackTp *sq,DataType *x)
{if(sp->top==0){error(“下溢”);return(0);}
else{*x=________________;
________________;
return(1);}
}
7、以下运算实现在顺序栈上判栈空,请在_____________处用适当句子予以填充。
Int EmptyStack(SqStackTp *sq)
{if(________________) return(1);
else return(0);
}
8、以下运算实现在顺序栈上取栈顶元素,请在_________处用适当句子予以填充。
Int GetTop(SqStackTp *sq,DataType *x)
{if(________________) return(0);
else{*x=________________;
return(1);}
}
9、以下运算实现在链栈上的进栈,请在处用请适当句子予以填充。
V oid Push(LStackTp *ls,DataType x)
{ LstackTp *p;p=malloc(sizeof(LstackTp));
________________;
p->next=ls;
________________;
}
10、以下运算实现在链栈上的退栈,请在___________处用请适当句子予以填充。
Int Pop(LstackTp *ls,DataType *x)
{LstackTp *p;
if(ls!=NULL)
{ p=ls;
*x=________________;
ls=ls->next;
________________;
return(1);
}else return(0);
}
11、以下运算实现在循环队上的入队列,请在_________用请适当句子予以填充。
Int EnCycQueue(CycquereTp *sq,DataType x)
{ if((sq->rear+1)%maxsize== ________________)
{error(“队满”);return(0);
else{ ________________;
________________ ________________;
return(1);
}
12、以下运算实现在循环队上的出队列,请在__________处用适当句子予以填充。
Int OutCycQueue(CycquereTp *sq,DataType *x)
{if(sq->front== ________________){error(“队空”);return(0);}
else{ ________________;
________________;
return(1);
}
}
13、以下运算实现在循环队上判队空,请在___________处用适当句子予以填充。
Int EmptyCycQueue(CycqueueTp sq)
{if(________________) return(1);
else return(0);
}
14、以下运算实现在循环队上取队头,请在____________处用适当句子予以填充。
Int GetHead(CycqueueTp sq,DataType *x)
{ if(sq.rear== ________________return(0);
else{ *x=sq.data[________________ ];
return(1);
}
15、链队在一定范围内不会出现(队空、队满)的情况。当lq.front==lq.rear试,队中无元素,此时(队空、队满)。
16、以下运算实现在链队上的初始化,请在____________处用适当句子予以填充。
void InitQueue(QueptrTp *lp)
{ LqueueTp *p;
p=(LqueueTp *)malloc(sizeof(LqueueTp));
________________;
lq->rear=p;
(lq->front)->next=________________;
}
17、以下运算实现在链队上判队空,请在______________处用适当句子予以填充
int EmptyQueue(QueptrTp *lq)
{ if(________________) return(1);
else return(0);
}
18、以下运算实现在链队上读队头元素,请在__________处用适当句子予以填充。
Int GetHead(QueptrTp lq,DataType *x)
{ LqueueTp *p;
if(lq.rear==lq.front) return(0);
else{________________;
________________ =p->data;
return(1);
}
}
19、阅读下列程序,写出程序的运行结果。
# define sqstack_maxsize 40
typedef struct sqstack
{ char data[sqstack_maxsize];
int top;
} SqStackTp;
main()
{ SqStackTp sq;
int i;
char ch;
InitStack(&sq);
For(ch=’A’;ch<=’A’+12;ch++)
{ Push(&sq,ch);
printf(“%c”,ch);
}
printf(“\n”);
while(!EmptyStack(sq))
{ Pop(&sq,&ch);
printf(“&c”,ch);
} printf(“\n”);
}
20、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的初始化队列、入队列算法。