INSTRUKSI
Buat program untuk menambahkan node single linked-list non-circular dengan tiap node mengandung informasi nim dan nama. Peletakan posisi node diurutkan berdasar nim secara ascending, jadi bisa tambah depan, belakang maupun tambah di tengah. Isikan data nim dan nama lengkap teman sebelah kiri dan kanan Anda. 


KODE PROGRAM
 #include "conio.h"
#include "iostream.h"
#include "stdio.h"
#include "string.h"

typedef struct TNode
{  int databaru;
char nama[25];
  TNode *next;
}TNode;

TNode*head;

void init()
{
  head=NULL;
}

int isEmpty()
{
  if (head==NULL)
    return 1;
    else
    return 0;
}

void menambah_didepan();
void menambah_dibelakang();
void menambah_ditengah();
void baca_maju();

main()
{
  int pil;

  do
  {
  cout<<"\nPILIHAN MENU\n";
  cout<<"------------------------------------\n";
  cout<<"º 1. Tambah Data Di Depan  º\n";
  cout<<"º 2. Tambah Data Di Akhir   º\n";
  cout<<"º 3. Tambah Data Di Tengah º\n";
  cout<<"º 4. Tampilkan                       º\n";
  cout<<"--------------------------------------\n";
  cout<<"Pilihan Anda = ";cin>>pil;
    switch (pil)
    {
    case 1 : menambah_didepan(); break;
    case 2 : menambah_dibelakang(); break;
    case 3 : menambah_ditengah(); break;
    case 4 : baca_maju(); break;
   }
  } while (pil!=5);
}


void judul_lap()
    {
 cout<<"\n======================================== \n";
 cout<<"\nTAMPILAN DATA !!!!! \n";
  }


void menambah_didepan()
{
 TNode *baru;
  baru=new TNode;
  cout<<"\n Masukkan Nama --> ";
  cin>>baru->nama;
  cout<<"\nMasukkan Nilai--> \n";
  cin>>baru->databaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    baru->next=head;
    head=baru;
  }
  getch();
}

void menambah_dibelakang()
{
  TNode *baru, *bantu;

    baru = new TNode;
 cout<<"\n Masukkan Nama --> ";
  cin>>baru->nama;
  cout<<"\nMasukkan Nilai--> \n";
  cin>>baru->databaru;
  baru->next=NULL;
  if(isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL)
      bantu=bantu->next;
    bantu->next=baru;
  }
}

void menambah_ditengah()
{
TNode*baru, *bantu;
  int xdatabaru;

    baru = new TNode;
 cout<<"\n Masukkan Nama --> ";
  cin>>baru->nama;
  cout<<"\nMasukkan Nilai--> \n";
  cin>>baru->databaru;
  cout<<"\nTambah Tengah Setelah angka - \n";cin>>xdatabaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
      bantu=bantu->next;
    baru->next=bantu->next;
    bantu->next=baru;
  }
}


void baca_maju()
{
  TNode *bantu;
  int brs=2,i;

  judul_lap();
  bantu=head;
  while (bantu!=NULL)
  {
      cout<nama;
    cout<<"  "<databaru<<"\n";
    brs++;
    bantu=bantu->next;
    }

  cout<<"\n----------------------------------------\n";
  cout<<"ENTER UNTUK MELANJUTKAN !!!";getch();
  }


TAMPILAN PROGRAM






INSTRUKSI
Buatlah sebuah fungsi untuk menghapus nim yang diinputkan oleh user.
Contoh tampilan:
NIM yang mau dihapus: 2205376
NIM dengan nama Andrew S ditemukan dan telah dihapus 

KODE PROGRAM

#include "iostream.h"
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
#include "string.h"

typedef struct TNode
{
    long nim;
    char nama[25];
  TNode *next;
}TNode;

TNode*head;
TNode*tail;

void init()
{
  head=NULL;
  tail=NULL;
}

int isEmpty()
{
  if (head==NULL)
    return 1;
    else
    return 0;
}

void insertdepan();
void insertbelakang();
void inserttengah();
void cari();
void hapus();
void tampil();

main()
{
  int pil;

  do
  {
  cout<<"\n \tPROGRAM UTAMA\n";
  cout<<" ===========================\n";
  cout<<"| 1. Tambah Data Di Depan   |\n";
  cout<<"| 2. Tambah Data Di Tengah  |\n";
  cout<<"| 3. Tambah Data Di Akhir   |\n";
  cout<<"| 4. Mencari Data           |\n";
  cout<<"| 5. Menghapus Data           |\n";
  cout<<"| 6. Tampilkan              |\n";
  cout<<"| 7. Keluar                 |\n";
  cout<<" ===========================\n\n";
  cout<<"Pilihan Anda = ";cin>>pil;
    switch (pil)
    {
    case 1 : insertdepan(); break;
    case 2 : inserttengah(); break;
    case 3 : insertbelakang(); break;
    case 4 : cari(); break;
    case 5 : hapus();break;
    case 6 : tampil(); break;
   }
  } while (pil!=7);
  return pil;
}


void insertdepan()
{
 TNode *baru;
  baru=new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    baru->next=head;
    head=baru;
  }

  getch();
}

void insertbelakang()
{
  TNode *baru, *bantu;

  baru = new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  baru->next=NULL;
  if(isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL)
      bantu=bantu->next;
    bantu->next=baru;
  }
}

void inserttengah()
{
TNode*baru, *bantu;
  long nimbaru;

   baru = new TNode;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM\t: ";
  cin>>baru->nim;
  cout<<"Nama\t: ";
  gets(baru->nama);
  cout<<"------------------------------------\n\n";
  cout<<"\nTambah Tengah Setelah NIM - ";
  cin>>nimbaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL && bantu->nim!=nimbaru)
    bantu=bantu->next;
    baru->next=bantu->next;
    bantu->next=baru;
  }
}

void cari(){
    TNode *bantu ;   
    bantu=head;
    long caridata;
  cout<<"\n\n------------------------------------";
  cout<<"\nNIM Yang Dicari  \t: ";
  cin>>caridata;
 int ketemu=0;
  if (isEmpty()==0)
      {
        while (bantu!=NULL)
        {
          bantu->nim;
          if(caridata==bantu->nim)
          {
              cout<<"\n\n>>> Data Yang Anda Cari Ditemukan <<<";
              cout<<"\n NIM yang dicari : "<nim;
              cout<<"\n Nama Yang Bersangkutan Adalah "<nama;
              cout<<"\n\n";
              ketemu=1;
          }
          bantu=bantu->next;
        }
        if (ketemu==0)
        {
          cout<<"Data Tidak Ditemukan";
        }
      }
        else cout<<"Data Masih Kosong";
       
      getch();
}


void hapus_simpul(long caridata)
{
 struct TNode *bantu,*hapus;
 if (head==NULL) {
     cout<<"\n Data List Kosong ";
     }
     else
         {
         if ((head->nim==caridata)==1)
             {
             hapus=head;
             head=hapus->next;
              cout<<"\n\n>>> Data Telah Dihapus <<<";
              cout<<"\n NIM yang dihapus : "<nim;
              cout<<"\n NIM dengan nama "<nama <<" ditemukan dan telah dihapus";
              cout<<"\n\n";
             free(hapus);
             }
                else
                    {
                    bantu=head;
                    while ((caridata==bantu->next->nim!=1) && (bantu->next!=NULL))
                        {
                        bantu=bantu->next;
                        }
                        hapus=bantu->next;
                        if (hapus!=NULL)
                            {
                            if (hapus!=tail) { bantu->next=hapus->next;
                            }
                            else
                                {
                                tail=bantu;
                                tail->next=NULL;
                                }
              cout<<"\n\n>>> Data Telah Dihapus <<<";
              cout<<"\n NIM yang dihapus : "<nim;
              cout<<"\n NIM dengan nama "<nama <<" ditemukan dan telah dihapus";
              cout<<"\n\n";
                                free(hapus);   
                            }
                    }
         }
}


void hapus()
{
 long cari;
  cout<<"\nNIM yang akan dihapus :";
  cin>>cari;
  hapus_simpul(cari);
 
}

void tampil()
{
  TNode *bantu;
  int brs=2,i;
cout<<"\n";
  bantu=head;
  while (bantu!=NULL)
  {
    cout<<"\n----------------------------------------\n";
    cout<nim;
    cout<<"  "<nama<<"\n";
    brs++;
    bantu=bantu->next;
    }

  cout<<"\n----------------------------------------\n";
  cout<<"Tekan ENTER untuk Kembali Ke Program Utama\n\n";
  getch();
  }




TAMPILAN PROGRAM