为帮助广大软考中级软件设计师考生更好备考,信管网特整理汇总了软件设计师部分下午真题、答案及解析供考生查阅,并提供免费在线模拟答题、历年真题免费下载等服务,了解软件设计师更多备考信息请关注信管网。
相关推荐:
免费练习:软件设计师考试题库(模拟试题、章节练习、每日一练)
阅读下列说明和c代码,将应填入 处的字句写在对应栏内。
【说明】
栈(stack)结构是计算机语言实现中的一种重要数据结构。对于任意栈,进行插入和删除操作的一端称为栈顶(stock top),而另一端称为栈底(stock bottom)。栈的基本操作包括:创建栈(newstack)、判断栈是否为空(isempty)、判断栈是否已满(isfull)、获取栈顶数据(top)、压栈/入栈(push)、弹栈/出栈(pop)。
当设计栈的存储结构时,可以采取多种方式。其中,采用链式存储结构实现的栈中各数据项不必连续存储(如下图所示)。
以下c代码采用链式存储结构实现一个整数栈操作。
【c代码】
typedef struct list {
int data; //栈数据
struct list* next; //上次入栈的数据地址
}list;
typedef struct stack{
list* ptop; //当前栈顶指针
}stack;
stack* newstack() {return (stack*) calloc(1/sizeof(stack));}
int isempty(stack* s){//判断栈s是否为空栈
if( (1) )return 1;
return 0;
}
int top(stack* s){//获取栈顶数据。若栈为空,则返回机器可表示的最小整数
if(isempty(s))return int_ min;
return (2) ;
}
void push(stack* s,int thedata) {//将数据thedata压栈
list* newnode;
newnode=(list*)calloc(1/sizeof (list));
newnode->data=thedata;
newnode->next=s->ptop;
s->ptop= (3) ;
}
void pop(stack* s) {//弹栈
list* lasttop;
if(isempty(s) ) return;
lasttop=s->ptop;
s->ptop= (4) ;
free(lasttop);
}
#define md(a) a<<2
int main(){
int i;
stack* mystack;
mystack= newstack();
push(mystack,md(1));
push(mystack,md(2));
pop(mystack);
push(mystack,md(3)+1);
while( !isempty(mystack) ){
printf("%d",top(mystack));
pop(mystack);
}
return 0;
}
以上程序运行时的输出结果为: (5)
信管网参考答案:
(1)S == NULL 丨丨 S->PTOP == NULL
(2)S->PTOP == data
(3)newnode
(4)S->PTOP->next
(5)24 4
温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!
信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。
信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。
发表评论 查看完整评论 | |