Wednesday, 8 December 2010

LINK LIST

 prak 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[])
  {
   cout<<"link list\n\n";
   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<5;i++){
   x.hapus(data);cout<<data<<" dihapus dari list : ";
   cout<<x;
   }

    system("PAUSE");
   return EXIT_SUCCESS;
   }

No comments:

Post a Comment