8
1 ञ✖ԿՕԘՑՇ՛Ԙ 㠹Ἷ ⸮ [email protected] ◌೧ॱ༪ 2 ⾱⡼ᢣ┏ ᢣ┏ ◌क༪ 918ᢣ ԗՑԡӘᦏ⼀⻤ ◌ॱ༪ 925ᢣ ԛ՛ԡՑԗԧӒԊԗԣԝ ◌झ༪ 102ᢣ ẛ☑ᆵӘԒդԸդՕդԱ ◌༧༪ 109ᢣ ԒԾԠԏԗӘ㌔ఇ ◌ॶ༪ 1016ᢣ ԒԾԠԏԗӘಌ⋵ ԯԡՑԗԧ ◌ஆ༪ 1023ᢣ ԗՑԡӘ❯ᚉ ◌घ༪ 1030ᢣ Ԯ՛ԿՔդ ◌༪ 116ᢣ स㔿⼩㟡 ◌ज़༪ 1113ᢣ Vector ◌೧༪ 1127ᢣ ➥ᑜՒԡ ◌೧क༪ 124ᢣ ԡԧԫԗ ◌೧ॱ༪ 1211ᢣ ԕՍդ ◌೧झ༪ 1218ᢣ ॱᦌ ◌೧༧༪ 115ᢣ ԯդԧ᭜㉏ӨӒӫ ◌೧ॶ༪ 122ᢣ ᦆᦎ⼩㟡 3 న༪Ә⽤㛸ӑ⺠ӵStack 4 Stack Stack : ᥨ㜇Әኔ㮢┽ө㍬ӗ㮣ӼᖌӁӨӃ ӁҮণ॰㮢ԧԡԗ㮣ә㮦⅁ཡ┽өञҶӍӐӵণ॰ӘᦲӘ ञӕ┽өञҶӴӨӃ ণ॰1 ণ॰2 ণ॰3 ণ॰4 ӁҮণ॰ ণ॰1 ণ॰2 ণ॰3 ণ॰4 ণ॰Әⅈ㛈 ҽӘԡԧԫԗәञҵӳ㛈ӕӴ௲ҿӶӵӘӑ क∮ᥰఉӕӍӉԧԡԗәᥰᒁӨӑᱳӴӨӃ

? U Q Giui.ci.seikei.ac.jp/~takase/wp/wp-content/uploads/2018/...¨6Ê/d6ø Ø.Î%ê void Stack::push(int v) { // LinkedList の insert_head と同じ head = new Node(v, head);}

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • void Stack::push(int v) { // LinkedList の insert_head と同じ head = new Node(v, head);}

    int Stack::pop() { // LinkedList から追加する関数 if (head != NULL) { int result = head->get_data(); Node* ptr = head; head = head->get_next(); delete ptr; return result; } return -1;}

    void StackV::push(int v) { data.push_back(v);}

    int StackV::pop() { if (data.size() != 0) { int v = data[data.size() - 1]; // data.back() で最後尾の要素が取得できるのでそれもOK data.pop_back(); return v; } else { return -1; }}

  • // queue1.cppconst int n = 8;class Queue{

    private: int data[n]; int sz;

    public : Queue(){ sz = 0; // コンストラクタは要素数の初期化のみ }

    void enqueue(int); // 引数をqueue末尾に追加 int dequeue(); // 先頭を戻してqueueから削除 void printAll(); // 確認のために出力関数を用意します};

  • void Queue::enqueue(int d){

    if(sz < n){ // 最大要素に満たなければ追加可能 data[sz] = d; // 最終要素に追加 sz++; } return ;}

    int Queue::dequeue(){ if(sz == 0) return -1; // queue が空なら-1を戻しておく //(↑が場合によって正しくないことは前回やりました) int v = data[0]; // 配列を前にずらす for(int i = 1; i < sz; i++){ data[i - 1] = data[i]; } sz--; return v;}

    void Queue::enqueue(int d){

    if(sz < n - 1){ // 最大要素に満たなければ追加可能 data[sz] = d; // 最終要素に追加 sz++; } return ;}

    int Queue::dequeue(){ if(sz == 0) return -1; // queue が空なら-1を戻しておく //(↑が場合によって正しくないことは前回やりました) int v = data[0]; // 配列を前にずらす for(int i = 1; i < sz; i++){ data[i - 1] = data[i]; } sz--; return v;}

  • // queue2.cppconst int n = 8;class Queue{

    private: int data[n]; int sz; // 配列が埋まってる数 int idx; // 先頭は今どこ?

    public : Queue(){ sz = 0; // 要素数の初期化 idx = 0; // 先頭要素は最初は0 }

    // ここは変更なし void enqueue(int); // 引数をqueue末尾に追加 int dequeue(); // 先頭を戻してqueueから削除 void printAll(); // 確認のために出力関数を用意します};

    void Queue::enqueue(int d){

    if(sz < n){ // 最大要素に満たなければ追加可能 data[(idx+sz)%n] = d; // 最終要素に追加 sz++; } return ;}

    int Queue::dequeue(){ if(sz == 0) return -1;// queue が空なら-1を戻しておく //(↑が場合によって正しくないことは前回やりました) int v = data[idx]; // idx が動く こちらも循環させる必要があります idx = (idx+1)%n; sz--; return v;}

    // queue1.cppconst int n = 8;class Queue{

    private: int data[n]; int sz;

    public : Queue(){ sz = 0; // コンストラクタは要素数の初期化のみ }

    void enqueue(int); // 引数をqueue末尾に追加 int dequeue(); // 先頭を戻してqueueから削除 void printAll(); // 確認のために出力関数を用意します};

  • // queue1.cppconst int n = 8;class Queue{

    private: int data[n]; int sz;

    public : Queue(){ sz = 0; // コンストラクタは要素数の初期化のみ }

    void enqueue(int); // 引数をqueue末尾に追加 int dequeue(); // 先頭を戻してqueueから削除 void printAll(); // 確認のために出力関数を用意します};

    // queue3.cppclass Node{ private : int data; Node* next; public : Node(int d, Node* n){ data = d; next = n; }

    int get_data(){ return data;} void set_next(Node* n){next = n;} Node* get_next(){return next;}};

    class Queue{

    private: Node* head;

    public : Queue(){ head = NULL; } // ここは変更なし void enqueue(int); // 引数をqueue末尾に追加 int dequeue(); // 先頭を戻してqueueから削除 void printAll(); // 確認のために出力関数を用意します};

    void Queue::enqueue(int d){ // 後ろに追加してみる // リストが空なら先頭に挿入 if(head == NULL){ head = new Node(d, head); return; }

    Node* ptr = head; while(ptr->get_next() !=NULL){ ptr = ptr->get_next(); }

    ptr->set_next(new Node(d,NULL));

    return ;}

    int Queue::dequeue(){ // 先頭を戻す if(head == NULL) return -1;

    int v = head->get_data(); Node* ptr = head; head = head->get_next();

    delete ptr; return v;}

    // queue4.cppint main(){ queue vque;

    int ar[8] = {1,2,3,4,5,6,7,8};

    for(int i = 0; i < 8; i++){ vque.push(ar[i]); }

    cout

  • // queue4.cppint main(){ queue vque;

    int ar[8] = {1,2,3,4,5,6,7,8};

    for(int i = 0; i < 8; i++){ vque.push(ar[i]); }

    cout