软考程序员考试试题及分析与解答(六)

程序员 责任编辑:小狐狸 2016-05-05

添加老师微信

备考咨询

加我微信

摘要:软考程序员考试试题及分析与解答(六)

       >>>>点击进入了解程序员培训视频

 >>>>点击进入了解程序员在线辅导

 >>>>点击进入了解程序员考试教材

       程序员考试是全国软考的初级考试,通过程序员考试的合格人员具有助理工程师(或技术员)的实际工作能力和业务水平。希赛软考网整理了一些程序员考试历年真题,供大家练习。

   试题六

   阅读以下说明,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);

     希赛软考网,拥有十四年软考培训经验,希赛网一直坚持自主研发,将丰富的软考培训经验有效融入教程研发过程,自成体系的软考在线题库软考历年真题)、软考培训教材软考视频教程,多样的培训方式包括在线辅导面授、和,使考生的学习更具系统性,辅导更具针对性。采用全程督学机制,,软考平均通过率在全国。

 相关推荐

 2016年希赛教材大放送 

   程序员教程

   程序员考试考前串讲

   程序员考试知识点分析与真题详解(第4版 )

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

软考备考资料免费领取

去领取