soraなりの日々 - fc2 -

こころにひっかかったもの

[c++,0x]コードの中心でiを理解する -第二回 0x会 my_list-

インフルエンザでダウン中。
しかし、きつかったのは1日目ぐらいで、
2日目の今日は特に、、なんだよね。

死ぬほど、暇な感じ。

で、どうせならってことで 0x会
2回目の課題をやることにした。


このエントリーをはてなブックマークに追加
で、課題はオレオレリスト(というのだろうか、、)。

チェーン構造体の復習です(次の構造体のポインタを持つ)。

まー、あいもかわらず、酷いですが晒しておきます。

[kwn_list.hpp]
/**
 *  @file kwn_list.hpp
 */

#ifndef _KWN_LIST_HPP
#define _KWN_LIST_HPP

#include <iostream>
#include <assert.h>

namespace kwn
{

  class list
  {
  public:
    /**
     *  @brief  constructor
     */
    list() { mp_list = NULL; }

    /**
     *  @brief  destructor
     */
    virtual ~list() { clear(); }

  public:
    void add(int n) {
      M_LIST* p_list = new M_LIST;
      p_list->init();
      p_list->prev = mp_list;
      p_list->next = NULL;
      p_list->num = n;
      mp_list = p_list;
    }

    void clear() {
      M_LIST* p_list = mp_list->next;
      M_LIST* next = NULL;
      while (p_list) {
        next = p_list->next;
        delete p_list;
        p_list = next;
      }

      p_list = mp_list->prev;
      M_LIST* prev = NULL;
      while (p_list) {
        prev = p_list->prev;
        delete p_list;
        p_list = prev;
      }
      if (mp_list) {
        delete mp_list;
      }
    }

    /** this is a test code... */
    void disp() {
      M_LIST* p_list = mp_list;
      M_LIST* next = NULL;
      while (p_list) {
        std::cout << p_list->num << std::endl;
        next = p_list->next;
        p_list = next;
      }
      p_list = mp_list;
      M_LIST* prev = NULL;
      while (p_list) {
        std::cout << p_list->num << std::endl;
        prev = p_list->prev;
        p_list = prev;
      }
    }

  private:

  private:
    typedef struct M_LIST {
      int num;
      M_LIST* prev;
      M_LIST* next;

      void init() {
        num = 0;
        prev = NULL;
        next = NULL;
      }
    } M_LIST;

    /**
     *  @brief  class member
     */
    M_LIST* mp_list;
  };
} // namespace kwn

#endif /* _KWN_LIST_HPP */


[main.cpp]
#include <iostream>
#include <assert.h>

#include "kwn_list.hpp"

/**
 *  @brief  test function
 *
 *   command line : g++ main.cpp
 *                : ./a.out
 *        gcc ver : 4.0.1 (Apple Inc. build 5465)
 */
int main()
{
  kwn::list list;
  list.add(2);
  list.add(3);
  list.disp();

  return 0;
}


まー、第一目標には達したかな、と。。


環境:PowerBook G4 1.25 GHz memory 1 GB
   :gcc version 4.0.1 (Apple Inc. build 5465)
このエントリーをはてなブックマークに追加

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://sora2hs.blog70.fc2.com/tb.php/430-dd140c9d
この記事にトラックバックする(FC2ブログユーザー)