摘要:软考程序员考试试题及分析与解答(六)
程序员考试是全国软考的初级考试,通过程序员考试的合格人员具有助理工程师(或技术员)的实际工作能力和业务水平。希赛软考网整理了一些程序员考试历年真题,供大家练习。
试题六
阅读以下说明,Java代码将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
链表和栈对象的共同特征是:在数据上执行的操作与在每个对象中实体存储的基本类型无关。例如,一个栈存储实体后,只要保证最后存储的项最先用,最先存储的项最后用,则栈的操作可以从链表的操作中派生得到。程序6-1实现了链表的操作,程序6-2实现了栈操作。
importjava.io.*;
classNode//定义结点
{privateStringm_content;
privateNodem_next;
Node(Stringstr)
{m_content=str;
m_next=null;}
Node(Stringstr,Nodenext)
{m_content=str;
m_next=next;}
StringgetData()//获取结点数据域
{returnm_content;}
voidsetNext(Nodenext)//设置下一个结点值
{m_next=next;}
NodegetNext()//返回下一个结点值
{returnm_next;}
}
【程序6-1】
classList
{NodeHead;
List()
{Head=null;}
voidinsert(Stringstr)//将数据str的结点插入在整个链表前面
{if(Head==null)
Head=newNode(str);
else
(1)
}
voidappend(Stringstr)//将数据str的结点插入在整个链表尾部
{Nodetempnode=Head;
if(tempnode==null)
Head=newNode(str);
else
{while(tempnode.getNext()!=null)
(2)
(3)}
}
Stringget()//移出链表第一个结点,并返回该结点的数据域
{Stringtemp=newString();
if(Head==null)
{System.out.println("Error!Getfromemptylist!");
System.exit(0);}
else
{temp=Head.getData();
(4)}
returntemp;
}
}
【程序6-2】
classStackextendsList
{voidpush(Stringstr)//进栈
{(5)}
Stringpop()//出栈
{returnget();}
}
试题六分析
本题考查链表和栈的基本特征在Java中的实现。
在对链表进行表头插入时,首先要判断该链表是否为空,如果为空,直接插入结点;如果非空,在插入结点时把该结点的指针域改成能指向下一个结点的地址。在队尾插入时,同样要判断该链表是否为空,如果为空,直接插入结点;如果非空,在插入结点时把上一个结点的指针域改成能指向该结点的地址。
下面来具体分析代码,首先定义了一个结点类,类中有两个不同的构造函数和三个函数,分别用于获取结点数据域,设置下一个结点值和返回下一个结点值。第(1)空是函数insert()里面的代码,函数要实现的功能是将数据str的结点插入在整个链表前面。结合整个函数看,此空处要实现的功能是在非空链表的前面插入结点,需要指针域来存放下一个结点的地址,而下一个结点的地址就是Head,因此,此处应该填Head=newNode(str,Head)。
第(2)空和第(3)空一起考虑,它们都是函数append()里面的内容。函数要实现的功能是将数据str的结点插入在整个链表尾部。这两空要实现的功能是在非空链表的尾部插入结点。这需要调用返回下一个结点值函数和设置下一个结点值函数,因此,第(2)空和第(3)空的答案分别为tempnode=tempnode.getNext()和tempnode.setNext(newNode(str,tempnode.getNext()))。
第(4)空是函数get()里面的内容,此函数的功能是移出链表第一个结点,并返回该结点的数据域,从整个函数来看,此空处的功能是让链表的地址Head指向下一个结点。因此,答案为Head=Head.getNext()。
第(5)空就比较简单了,要实现的功能就是让数据进栈,而进栈操作是在栈顶进行插入的,因此,只要调用函数insert()即可,其参数是str,此空答案为insert(str)。
试题六答案
(1)Head=newNode(str,Head):
(2)tempnode=tempnode,getNext();
(3)tempnode,setNext(newNode(str,tempnode,getNext()));
(4)Head=Head.getNext();
(5)inset(str);
希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库(软考历年真题)、软考培训教材和软考视频教程,多样的培训方式包括在线辅导、面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。
相关推荐
软考备考资料免费领取
去领取