<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>リスト処理の演習</title><revhistory><revision><revnumber>25</revnumber><date>2012-03-27 05:02:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>24</revnumber><date>2012-03-27 04:59:05</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>23</revnumber><date>2012-03-27 04:57:25</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>22</revnumber><date>2012-03-27 04:57:16</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>21</revnumber><date>2012-03-27 04:56:32</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>20</revnumber><date>2012-03-27 04:56:19</date><authorinitials>masahiko</authorinitials><revremark>名前を'Java課題07'から変更。</revremark></revision><revision><revnumber>19</revnumber><date>2011-11-09 00:16:32</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>18</revnumber><date>2011-09-16 00:57:40</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>17</revnumber><date>2010-11-17 04:26:08</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>16</revnumber><date>2010-11-17 00:31:07</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2010-11-16 12:38:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2010-11-16 12:36:40</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2010-11-15 12:59:37</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2010-11-15 12:58:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2010-11-15 12:54:09</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2010-11-15 12:44:16</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2010-11-15 12:43:42</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2010-11-15 01:10:01</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2010-11-07 01:05:11</date><authorinitials>masahiko</authorinitials><revremark>名前を'ヒント06'から変更。</revremark></revision><revision><revnumber>6</revnumber><date>2010-11-07 01:04:41</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2009-11-11 00:33:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2009-11-11 00:33:05</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2009-11-10 12:24:38</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2009-11-10 12:22:39</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2009-11-10 12:17:24</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>リスト処理の演習</title><section><title>課題１</title><para>Chainクラスを作成し、次のいずれかを行うmainメソッドを記述しなさい。 </para><itemizedlist><listitem override="none"><programlisting format="linespecific" language="java" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[class]]></token><![CDATA[ ]]><methodname><![CDATA[Chain]]></methodname>
<![CDATA[{]]>
<![CDATA[        ]]><methodname><![CDATA[Chain]]></methodname><![CDATA[ ]]><methodname><![CDATA[next]]></methodname><![CDATA[;]]>

<![CDATA[        ]]><token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[show]]></methodname><![CDATA[()]]>
<![CDATA[        {]]>
<![CDATA[                ]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[out]]></methodname><![CDATA[.]]><methodname><![CDATA[println]]></methodname><![CDATA[(]]><token><![CDATA[this]]></token><![CDATA[);]]>
<![CDATA[        }]]>

<![CDATA[        ]]><token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[showAll]]></methodname><![CDATA[()]]>
<![CDATA[        {]]>
<![CDATA[                ]]><methodname><![CDATA[Chain]]></methodname><![CDATA[ ]]><methodname><![CDATA[c]]></methodname><![CDATA[;]]>

<![CDATA[                ]]><methodname><![CDATA[c]]></methodname><![CDATA[ = ]]><token><![CDATA[this]]></token><![CDATA[;]]>
<![CDATA[                ]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[out]]></methodname><![CDATA[.]]><methodname><![CDATA[println]]></methodname><![CDATA[(]]><phrase><![CDATA["("]]></phrase><![CDATA[);]]>
<![CDATA[                ]]><token><![CDATA[while]]></token><![CDATA[(]]><methodname><![CDATA[c]]></methodname><![CDATA[ != ]]><symbol><![CDATA[null]]></symbol><![CDATA[)]]>
<![CDATA[                {]]>
<![CDATA[                        ]]><methodname><![CDATA[c]]></methodname><![CDATA[.]]><methodname><![CDATA[show]]></methodname><![CDATA[();]]>
<![CDATA[                        ]]><methodname><![CDATA[c]]></methodname><![CDATA[ = ]]><methodname><![CDATA[c]]></methodname><![CDATA[.]]><methodname><![CDATA[next]]></methodname><![CDATA[;]]>
<![CDATA[                }]]>
<![CDATA[                ]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[out]]></methodname><![CDATA[.]]><methodname><![CDATA[println]]></methodname><![CDATA[(]]><phrase><![CDATA[")"]]></phrase><![CDATA[);]]>
<![CDATA[        }]]>
<![CDATA[        ]]>
<![CDATA[        ]]><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[static]]></token><![CDATA[ ]]><token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[main]]></methodname><![CDATA[(]]><methodname><![CDATA[String]]></methodname><![CDATA[[] ]]><methodname><![CDATA[args]]></methodname><![CDATA[)]]>
<![CDATA[        {]]>
<![CDATA[                ]]><methodname><![CDATA[Chain]]></methodname><![CDATA[ ]]><methodname><![CDATA[a]]></methodname><![CDATA[, ]]><methodname><![CDATA[b]]></methodname><![CDATA[, ]]><methodname><![CDATA[c]]></methodname><![CDATA[;]]>
<![CDATA[                ...]]>
<![CDATA[        }]]>
<![CDATA[}]]>
</programlisting></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>1. (初級)</title><para>mainメソッド内の変数a,b,cが図のようなオブジェクトを参照しているようにした後 </para><itemizedlist><listitem override="none"><screen><![CDATA[a.showAll();
b.showAll();
c.showAll();]]></screen></listitem></itemizedlist><para>を行って動作を確かめなさい。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%83%AA%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86%E3%81%AE%E6%BC%94%E7%BF%92?action=AttachFile&amp;do=get&amp;target=chain11.png"/></imageobject><textobject><phrase>chain11.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>ヒント </para><itemizedlist><listitem override="none"><para>インスタンスは必要な個数(７つ) new Chain() で作成します。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>2. (中級)</title><para>１と同じことを、 next.next のような記述をしないで行いなさい。 </para><para>ヒント </para><itemizedlist><listitem override="none"><para>作業用の変数が１つ必要です。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>3. (上級)</title><para>１と同じことを、インスタンスを次の順で作成して行いなさい。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%83%AA%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86%E3%81%AE%E6%BC%94%E7%BF%92?action=AttachFile&amp;do=get&amp;target=chain12.png"/></imageobject><textobject><phrase>chain12.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>ヒント </para><itemizedlist><listitem override="none"><para>作業用の変数はa,b,cの他に１つとする。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>課題２</title><para>Chainクラスにメソッドを追加し動作を確かめなさい。 </para><!--rule (<hr>) is not applicable to DocBook--><section><title>1. (初級)</title><para>つぎの３つのメソッドを記述し、mainメソッドにはそれらの動作確認の処理を記述しなさい。 </para><itemizedlist><listitem><para>void showContent() </para></listitem><listitem><para>void add(Chain c) </para></listitem><listitem><para>void del( ) </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>2. (中級)</title><para>初級に次を追加。 </para><para>つぎのメソッドを記述し、 mainメソッドにはそれらをつかって、リストのｎ番目を削除する処理、リストのｎ番目に追加する処理を記述しなさい。 </para><itemizedlist><listitem><para>Chain nth(int n) </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>3. (上級)</title><para>中級に次を追加。 </para><para>つぎのメソッドを記述し、 mainメソッドには、リストの最後のオブジェクトを削除する処理、リストの最後に追加する処理を追加しなさい。 </para><itemizedlist><listitem><para>int length( ) </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>課題３</title><para>課題２の初級まで済んでおり Chainクラスにはコンストラクタと次のメソッドが定義されているものとする。 </para><itemizedlist><listitem><para>add </para></listitem><listitem><para>del </para></listitem><listitem><para>showContent </para></listitem></itemizedlist><para>以下の課題では、Chainクラスに修正加えないこと。 </para><para>Chainクラスを継承してCardクラスを作成した後、 以下の１～３のいずれかを行いなさい。 </para><itemizedlist><listitem><para>青で囲んだ部分をつなぎ変えて逆順にする問題です。 </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%83%AA%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86%E3%81%AE%E6%BC%94%E7%BF%92?action=AttachFile&amp;do=get&amp;target=chain51.png"/></imageobject><textobject><phrase>chain51.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>Cardクラスは次のとおり入力し、設問に対応する処理をmainメソッド内に追加しなさい。 </para><itemizedlist><listitem override="none"><programlisting format="linespecific" language="java" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[class]]></token><![CDATA[ ]]><methodname><![CDATA[Card]]></methodname><![CDATA[ ]]><token><![CDATA[extends]]></token><![CDATA[ ]]><methodname><![CDATA[Chain]]></methodname>
<![CDATA[{]]>
<![CDATA[        ]]><methodname><![CDATA[String]]></methodname><![CDATA[ ]]><methodname><![CDATA[suit]]></methodname><![CDATA[;]]>
<![CDATA[        ]]><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[rank]]></methodname><![CDATA[;]]>

<![CDATA[        ]]><methodname><![CDATA[Card]]></methodname><![CDATA[()]]>
<![CDATA[        {]]>
<![CDATA[        }]]>

<![CDATA[        ]]><methodname><![CDATA[Card]]></methodname><![CDATA[(]]><methodname><![CDATA[String]]></methodname><![CDATA[ ]]><methodname><![CDATA[suit]]></methodname><![CDATA[, ]]><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[rank]]></methodname><![CDATA[)]]>
<![CDATA[        {]]>
<![CDATA[                ]]><token><![CDATA[this]]></token><![CDATA[.]]><methodname><![CDATA[suit]]></methodname><![CDATA[ = ]]><methodname><![CDATA[suit]]></methodname><![CDATA[;]]>
<![CDATA[                ]]><token><![CDATA[this]]></token><![CDATA[.]]><methodname><![CDATA[rank]]></methodname><![CDATA[ = ]]><methodname><![CDATA[rank]]></methodname><![CDATA[;]]>
<![CDATA[        }]]>

<![CDATA[        ]]><token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[show]]></methodname><![CDATA[()]]>
<![CDATA[        {]]>
<![CDATA[                ]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[out]]></methodname><![CDATA[.]]><methodname><![CDATA[printf]]></methodname><![CDATA[(]]><phrase><![CDATA["%s %d\n"]]></phrase><![CDATA[, ]]><methodname><![CDATA[suit]]></methodname><![CDATA[, ]]><methodname><![CDATA[rank]]></methodname><![CDATA[);]]>
<![CDATA[        }]]>
<![CDATA[        ]]>
<![CDATA[        ]]><methodname><![CDATA[Card]]></methodname><![CDATA[ ]]><methodname><![CDATA[first]]></methodname><![CDATA[()]]>
<![CDATA[        {]]>
<![CDATA[                ]]><token><![CDATA[return]]></token><![CDATA[ (]]><methodname><![CDATA[Card]]></methodname><![CDATA[)]]><token><![CDATA[this]]></token><![CDATA[.]]><methodname><![CDATA[next]]></methodname><![CDATA[;]]>
<![CDATA[        }]]>
<![CDATA[        ]]>
<![CDATA[        ]]><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[static]]></token><![CDATA[ ]]><token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[main]]></methodname><![CDATA[(]]><methodname><![CDATA[String]]></methodname><![CDATA[[] ]]><methodname><![CDATA[args]]></methodname><![CDATA[)]]>
<![CDATA[        {]]>
<![CDATA[                ]]><methodname><![CDATA[Card]]></methodname><![CDATA[ ]]><methodname><![CDATA[a]]></methodname><![CDATA[, ]]><methodname><![CDATA[b]]></methodname><![CDATA[;]]>
<![CDATA[                ]]><methodname><![CDATA[a]]></methodname><![CDATA[ = ]]><token><![CDATA[new]]></token><![CDATA[ ]]><methodname><![CDATA[Card]]></methodname><![CDATA[();]]>
<![CDATA[                ]]><methodname><![CDATA[b]]></methodname><![CDATA[ = ]]><token><![CDATA[new]]></token><![CDATA[ ]]><methodname><![CDATA[Card]]></methodname><![CDATA[();]]>
<![CDATA[                ]]>
<![CDATA[                ]]><methodname><![CDATA[a]]></methodname><![CDATA[.]]><methodname><![CDATA[add]]></methodname><![CDATA[(]]><token><![CDATA[new]]></token><![CDATA[  ]]><methodname><![CDATA[Card]]></methodname><![CDATA[(]]><phrase><![CDATA["ハート"]]></phrase><![CDATA[, 13));]]>
<![CDATA[                ]]><methodname><![CDATA[a]]></methodname><![CDATA[.]]><methodname><![CDATA[add]]></methodname><![CDATA[(]]><token><![CDATA[new]]></token><![CDATA[  ]]><methodname><![CDATA[Card]]></methodname><![CDATA[(]]><phrase><![CDATA["ハート"]]></phrase><![CDATA[, 12));]]>
<![CDATA[                ]]><methodname><![CDATA[a]]></methodname><![CDATA[.]]><methodname><![CDATA[showContent]]></methodname><![CDATA[();]]>
<![CDATA[                ]]>
<![CDATA[                ]]><lineannotation><![CDATA[// ここに追加]]></lineannotation>
<lineannotation></lineannotation><![CDATA[                ]]>
<![CDATA[                ]]><methodname><![CDATA[b]]></methodname><![CDATA[.]]><methodname><![CDATA[showContent]]></methodname><![CDATA[();]]>
<![CDATA[        }]]>
<![CDATA[}]]>
</programlisting></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><para> <emphasis role="strong">注意</emphasis> </para><itemizedlist><listitem><para>新しいインスタンスを作ったり、suitやrankに代入してはいけません。  </para></listitem><listitem><para>変数aの内容が変わってもよい。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>１．(初級)</title><para>mainメソッドの34行目まで行うと、次のような状態になる。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%83%AA%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86%E3%81%AE%E6%BC%94%E7%BF%92?action=AttachFile&amp;do=get&amp;target=card5.png"/></imageobject><textobject><phrase>card5.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%83%AA%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86%E3%81%AE%E6%BC%94%E7%BF%92?action=AttachFile&amp;do=get&amp;target=card6.png"/></imageobject><textobject><phrase>card6.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>この後、インスタンスを繫ぎかえて、次の状態にする処理を書きなさい。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%83%AA%E3%82%B9%E3%83%88%E5%87%A6%E7%90%86%E3%81%AE%E6%BC%94%E7%BF%92?action=AttachFile&amp;do=get&amp;target=card7.png"/></imageobject><textobject><phrase>card7.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>２．(中級)</title><para>青で囲んだ部分に３つのインスタンスがつながっているときに、 その３つを逆順につなぎかえる処理を、 メソッド呼び出しだけを用いて行いなさい。 </para><para>34行目のa.showContent()で </para><itemizedlist><listitem override="none"><screen><![CDATA[(
ハート 11
ハート 12
ハート 13
)]]></screen></listitem></itemizedlist><para>と表示され、 最後のb.showContent()で </para><itemizedlist><listitem override="none"><screen><![CDATA[(
ハート 13
ハート 12
ハート 11
)]]></screen></listitem></itemizedlist><para>と表示されるようにする。 </para><para>ヒント </para><itemizedlist><listitem><para>first() </para></listitem><listitem><para>add() </para></listitem><listitem><para>del() </para></listitem></itemizedlist><para>を使います。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>３．(上級)</title><para>青で囲んだ部分につながっているインスタンスの個数がいくつであっても、 それらを逆順につなぎかえる処理を、 メソッド呼び出しだけを用いて行いなさい。 </para></section></section></article>