第三章作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针),试编写相应的初始化队列、入队列算法。

相关文档
最新文档