Sabtu, 04 Desember 2010

Praktikum ke 6

include <cstdlib>
#include <iostream>

using namespace std;

class Node{
      friend class List;
      friend ostream& operator<<(ostream&, const List&);
public:
       Node(char& t, Node* p) : info(t), berikut(p){}
protected:
          char info;
          Node* berikut;
};


class List{
      friend ostream& operator<<(ostream&, const List&);
public:
       List():kepala(0){}
       ~List();
       void sisip(char t);
       int hapus(char& t);
       int kosong(){return (kepala == 0);}
       void cetak();
protected:
          Node* kepala;
          Node* nodeBaru(char& t, Node* p)
          {Node* q = new Node(t,p); return q;}
};


ostream& operator<<(ostream& out, const List& k)
{
         for(Node* p = k.kepala; p; p=p->berikut)
         out << p->info << " -> ";
         out << "*\n";
         return out;
}

List::~List()
{
             Node* temp;
             for(Node* p = kepala; p;)
             {
                       temp = p;
                       p = p->berikut;
                       delete temp;
             }
}

void List::sisip(char t)
{
     cout << t << " masuk list : ";
     Node* p = nodeBaru(t,kepala);
     kepala = p;
}

int List::hapus(char& t)
{
    if(kosong()) return 0;
    t = kepala->info;
    Node* p = kepala;
    kepala = kepala->berikut;
    delete p;
    return 1;
}

void List::cetak()
{
     for(Node* p = kepala; p; p=p->berikut)
     cout << p->info << " -> ";
     cout << "*\n";
}

int main(int argc, char *argv[])
{
    List x;
    char data;
    x.sisip('a');
    cout << x;
    x.sisip('b');
    cout << x;
    x.sisip('c');
    cout << x;
    x.sisip('d');
    cout << x;
    for(int i=0; i<4; i++){
            x.hapus(data);
            cout << data << " dihapus dari list : ";
            cout << x;
            }
    system("PAUSE");
    return EXIT_SUCCESS;
}

Tidak ada komentar:

Posting Komentar