Selasa, 29 Maret 2011

Yui - I Remember You



Kaze wa mou tumetai keredo
Natukashii sora no nioi ga shitanda
Hoomu kara umi ga mieru
Kono basho de kimi wo sagashiteru
Kisetsu hazureno saafu boodo ni
Ano natu wa kitto ikiteru
Taiyou wa zutto oboete ita hazusa
Nee, kikoeteru?
Namida wo misenai tte kimi wa sou itte
Bokutachi wa futari te wo futta
Sayonara wa iwanai dakara te wo futta
Yuuyake ni kieta I remember you
Sabita gitaa kakaeru tabi ni
Ano uta ga mune no oku wo tsukamu kedo
Ima mo mada saenai hibi
Kono basho de boku wa sugoshiteru
Dakedo omounda “Dare ka no tame ni
Kitto bokura wa ikiteru”
Taiyou ga kitto oshiete kureta nda
Nee, kikoeteru
Namida wo misenai tte kimi wa sou itte
Bokutachi wa futari te wo futta
Sayonara wa iwanai dakara te wo futta
Yuuyake ni kieta I remember you
Arekara no boku wa
Aikawarazu dakedo
Hon no sukoshi jishin ga arunda yeah yeah yeah
Namida wo koraeteru yakusoku dakara
Dare yori mo tsuyoku narana kucha
Sayonara wa iwanai datte me wo tojite
Suguni aeru I remember you

Senin, 28 Maret 2011

Tugas Single Linked List

ALGORITMA

Procedure sisip_awal (input tamu : dtamu, i/o head,tail: simpul)
{I.S : data yang akan disisipkan, pointer penunjuk head & pointer penunjuk tail sudah terdefinisi}
{F.S : menghasilkan satu simpul yang disisipkan di depan pada single linked list}
kamus :

            baru : simpul
algoritma :
            alloc (baru)
baru↑.noßno.tamu
baru↑.namaßnama.tamu
if (head=nil)
then
            baru↑.nextßnil
            tail ßbaru
else
            baru↑.nextßhead
endif
headßbaru
endprocedure

procedure sisip_akhir (input tamu : dtamu, i/o head, tail : simpul)
{I.S : data yang akan disisipkan, pointer penunjuk head & pointer penunjuk tail sudah terdefinisi}
{F.S : menghasilkan satu simpul yang disisipkan di belakang pada single linked list}
kamus :

            baru : simpul
algoritma :
            alloc (baru)
            baru↑.noßno.tamu
            baru↑.namaßnama.tamu
            baru↑.nextßnil
            if (head=nil)
            then
                        headßbaru
            else
                        tail ↑.nextßbaru
            endif
            tail ßbaru
endprocedure

procedure sisip_tengah(input tamu : dtamu, i/o head, tail : simpul)
{I.S : data yang akan disisipkan, pointer penunjuk head & pointer penunjuk tail sudah terdefinisi}
{F.S : menghasilkan satu simpul yang disisipkan di tengah pada single linked list}
kamus :
procedure sisip_akhir (input tamu : dtamu,i/o head, tail : simpul)

baru,bantu : simpul
ketemu : boolean
datasisip : string
algoritma :
            if (head=nil)
            then
                        alloc (baru)
                        baru↑.noßno.tamu
baru↑.namaßnama.tamu
baru↑.nextßnil
headßbaru
tail ßbaru
else
            input (datasisip)
bantußhead
ketemußfalse
while(not ketemu and bantu≠nil) do
            if ((datasisip=bantu↑.no) and (datasisip=bantu↑.nama))
            then
                        ketemußtrue
            else
                        bantußbantu↑.next
            endif
                        endwhile
            if (ketemu)
            then
                        alloc (baru)
baru↑.noßno.tamu
baru↑.namaßnama.tamu
if (bantu=tail)
then
            sisip_akhir (tamu,head, tail)
else
            baru↑.nextßbantu↑.next
            bantu↑.nextßbaru
endif
                        else
                                    output (‘Data yang akan disisipkan tidak ada’)
                        endif
            endif
endprocedure

allocated_dtamu(input tamu : dtamu,i/o head,tail : simpul)
{I.S : data yang akan disisipkan sudah terdefinisi}
{F.S : - }
kamus :

algoritma :
            alloc(baru)
            input(no.tamu)
            input(nama.tamu)
endprocedure

procedure del_awal (i/o head, tail : simpul)
{I.S : pointer penunjuk head & pointer penunjuk tail sudah terdefinisi}
{F.S : menghasilkan satu simpul yang dihapus di depan pada single linked list}
kamus :
            phapus : simpul
algoritma :
if (head=nil)
then
            output (‘Data kosong & tidak bisa dihapus’)
else
if (head= tail)
then
            noßhead↑.no
namaßhead↑.nama
            dealloc (head)
            head↑.noßnil
            head↑.namaßnil
akhir↑.noßnil
tail ↑.namaßnil
else
            phapusßhead
            noßhead↑.no
            namaßhead↑.nama
headßhead↑.next
dealloc (phapus)
endif
endprocedure

procedure del_akhir (i/o head, tail : simpul)
{I.S : pointer penunjuk head & pointer penunjuk akhir sudah terdefinisi}
{F.S : menghasilkan satu simpul yang dihapus di belakang pada single linked list}
kamus :
            phapus : simpul
algoritma :
            if (head=nil)
then
                        output (‘Data kosong dan tidak bisa dihapus’)
else
if (head= tail)
then
                        noß tail ↑.no
namaß tail ↑.nama
dealloc (baru)
tail ↑.noßnil
tail ↑.namaßnil
head↑.noßnil
head↑.namaßnil
            else
                        phapusß tail
while (phapus↑.next≠ tail) do
                                    bantußbantu↑.next
endwhile
tail ßphapus
phapusß tail ↑.next
noß tail ↑.no
namaß tail ↑.nama
dealloc (phapus)
endif
endprocedure

procedure del_tengah (input posisi : integer, i/o head, tail : simpul)
{I.S : pointer penunjuk head & pointer penunjuk akhir sudah terdefinisi}
{F.S : menghasilkan satu simpul yang dihapus di tengah pada single linked list}
kamus :
            banyakdata,poshapus : integer
            prev,hapus : simpul
algoritma :
            if (head=nil)
then
                        output (‘Linked list kosong’)
else
                        banyakdata=1
prev=head
while(prev↑.next≠nil) do
                                    prev=prev↑.next
                                    banyakdata=banyak + 1
endwhile
if ((posisi<1) or (posisi>banyakdata))
then
                                    output (‘posisi di luar jangkauan’)
else
if (posisi=1)
then
                                    del_awal (head, tail)
else
if (posisi=banyakdata)
then
                                    del_akhir(head, tail)
else
                                    prev=head
poshapus=1
while(poshapus<(posisi-1)) do
                                                prev=prev↑.next
                                                poshapus=poshapus+1
endwhile
hapus=prev↑.next
prev↑.next=hapus↑.next
dealloc(hapus)
                        endif
            endif
endprocedure

procedure cari (input tamu : dtamu,i/o head : simpul)
{I.S : data yang dicari,pointer penunjuk head dan pointer penunjuk akhir telah terdefinisi }
{F.S : menampilkan data yang dicari}
kamus :
            bantu : simpul
            posisi,ketemu : integer
algoritma :
            ketemu=0
if (head≠nil)
then
                        posisi=1
bantußhead
while ((bantu≠nil) and (ketemu=0)) do
if ((bantu↑.no=no) and (bantu↑.nama=nama))
then
                                                ketemu=1
else
                                                bantußbantu↑.next
posisißposisi + 1
endif
                        endwhile
            endif
endprocedure

procedure tampil ( i/o head : simpul)
{I.S : pointer penunjuk head telah terdefinisi }
{F.S : menampilkan data yang sudah terurut secara descending}
kamus :
bantu,bantu2,idxterkecil : simpul
temp : integer
algoritma :
            if (head≠nil)
then
                        bantu=head
                        while (bantu↑.next≠nil) do
                                    bantu2=bantu
idxterkecil=bantu
while (bantu2≠nil) do
                                                if (bantu2↑.no < idxterkecil↑.no)
then
                                                            idxterkecil=bantu2
endif
bantu2=bantu2↑.next
endwhile
if (bantu↑.no > idxterkecil↑.no)
then
temp=bantu↑.no
bantu↑.no=idxterkecil↑.no
idxterkecil↑.no=temp
                                    endif
                                                bantu=bantu↑.next
                        endwhile
            else
                        output (‘Pengurutan dibatalkan karena linked list kosong’)
            endif
endprocedure

procedure listkosong ( i/o head : simpul)
{I.S : pointer penunjuk head telah terdefinisi }
{F.S : menampilkan list kosong}
kamus :

algoritma :
output("                                List Kosong               \n");
output("                       Masukkan Data Terlebih Dahulu      \n\n\n");
endprocedure

{algoritma utama}
Algoritma_penyisipan
kamus :
procedure sisip_awal (input tamu : dtamu i/o head, tail : simpul)
procedure sisip_akhir (input tamu : dtamu, i/o head, tail : simpul)
procedure sisip_tengah (input tamu : dtamu, i/o head, tail : simpul)
procedure del_depan (i/o head, tail : simpul)
procedure del_akhir (i/o head, tail : simpul)
procedure del_tengah (input posisi : integer, i/o head, tail : simpul)
procedure cari(input tamu : dtamu ,i/o head : simpul)
allocated_dtamu(input tamu : dtamu,i/o head,tail : simpul)
procedure listkosong ( i/o head : simpul)
procedure tampil ( i/o head : simpul)
procedure urut (i/o head : simpul)

{Deklarasi}
simpul=↑dtamu
dtamu=record
< no : integer,
nama : string,
next : simpul>
endrecord
head, tail =simpul {pointer penunjuk}
menu,posisi : integer
no : integer
nama: string
algoritma :
headßnil
tail ßnil
repeat
output (‘MENU LINKED LIST’)
output (‘1.Sisip Data Tamu’)
output (‘2.Hapus Data’)
output (‘3.Cari Data’)
output (‘4.Tampil Data secara descending’)
output (‘5.Keluar’)
input (menu)
if (menu=1)
then
output (‘1.Sisip Depan’)
output (‘2.Sisip Tengah’)
output (‘3.Sisip Belakang’)
input (menu)
depend on (menu)
(menu=1) : allocated_dtamu(no,nama)
                                                sisip_awal (no,nama,head, tail)
(menu=2) : allocated_dtamu(no,nama)
                                                sisip_tengah (no,nama,head, tail)
(menu=3) : allocated_dtamu(no,nama)
sisip_akhir (no,nama,head, tail)
enddepend
                        else
                        if (menu=2)
                        then
output (‘1.Hapus Awal’)
output (‘2.Hapus Tengah’)
output (‘3.Hapus Akhir’)
input (menu)
depend on (menu)
(menu=1) : del_awal (head, tail)
(menu=2) : del_tengah (posisi,head, tail)
(menu=3) : del_akhir (head, tail)
                                    enddepend
                        else
if (menu=3)
then
                                    cari (no,nama ,head)
else
if (menu=4)
then
                                    tampil (head)
endif
            until (menu=5)
endalgoritma

BAHASA C

#include<stdio.h>
#include<stdlib.h>

typedef struct simpul dtamu;
struct simpul
       {
             int no;
             char nama[20];
             dtamu *next;
       };
         dtamu *head;
         dtamu *p;
         dtamu *bantu;
         dtamu *bantu2;
         dtamu *tail;
         int allocated_dtamu(int *no,char *nama);
void menu();
void sisip();
void sisip_awal();
void sisip_akhir();
void sisip_sesudah();
void sisip_sebelum();
void del();
void del_awal();
void del_akhir();
void del_tengah();
void tampil();
void cari();
void listkosong();
void urut();

int main(int argc, char *argv[])
{
     do  {
  menu();
}while(1);
  system("PAUSE");   
  return 0;
}

void menu()  {
    int pil,no;
    char nama[20];
      printf("                                 MENU LINKED LIST                          \n");
      printf("                     ==================================\n");
      printf("                          1.Sisip Data Tamu                                        \n");
      printf("                          2.Hapus Data                                                \n");
      printf("                          3.Cari  Data                                                   \n");
      printf("                          4.Tampil Data Secara Descending                \n");
      printf("                          5.Keluar                                                          \n");
      printf("                     ===================================\n");
      printf("                            Masukkan Pilihan Anda [1..5] : "); scanf("%d",&pil);
      switch(pil)
      {
           case 1:
                  system("CLS");
                  allocated_dtamu(no,nama);
                  sisip();
                  break;
           case 2:
                  system("CLS");
                  del();
                  break;
           case 3:
                system("CLS");
                cari();
               system("PAUSE");
               system("CLS");
                break;
           case 4:
                  system("CLS");
                   urut();
                   tampil();
                     system("PAUSE");
                      system("CLS");
                      break;
           case 5:
                  exit(0);
                  break;
      }     
              printf("\n");
     }
    
void sisip()
     {
            system("CLS");
      int pil;
      printf("\n");
      printf("                               MENU SISIP                 \n");
      printf("                     ================================\n");
      printf("                              1.Sisip Awal             \n");
      printf("                              2.Sisip Akhir             \n");
      printf("                              3.Sisip Sesudah             \n");
      printf("                              4.Sisip Sebelumn          \n");
      printf("                     ================================\n");
      printf("                     Masukkan Pilihan Anda [1..4] : "); scanf("%d",&pil);
      switch(pil)
      {
      case 1:
            system("CLS");
              sisip_awal();
               tampil();
              break;
      case 2:
            system("CLS");
             sisip_akhir();
              tampil();
             break;
      case 3:
            system("CLS");
             sisip_sesudah();
              tampil();
             break;
      case 4:
            system("CLS");
             sisip_sebelum();
              tampil();
             break;
      }
       printf("\n");
     }
    
int allocated_dtamu(int *no,char *nama){
p=(dtamu *)malloc(sizeof(dtamu));
if(p==NULL){
printf("Pemesanan Alokasi Memori GAGAL\n");
return 0;
}
else
{
printf("                        Masukkan No.Tamu : ");scanf("%d",&p->no);fflush(stdin);
printf("                        Masukkan Nama Tamu : ");gets(p->nama);fflush(stdin);
p->next=NULL;
return 1;
printf("\n");
}
}

void sisip_awal()
 {
      if(allocated_dtamu==0){
      printf("Pemesanan Memori GAGAL\n");
exit(0);
         }              if(head==NULL)
                        head=p;
         else{
             p->next=head;
             head=p;
         }
         fflush(stdin);
;}

void sisip_akhir() {
  dtamu *tail;
  tail=head;
  if(allocated_dtamu==0)
  exit(0);
          if(head==NULL)
          {
           head=p;
           tail=p;
           }
           else {
                  while(tail->next!=NULL) {
                  tail=tail->next;
           }
                  tail->next=p;
                  tail=tail->next;
           }
          }
         
void tampil() {
      dtamu *tampil;
      tampil=head;
                             printf("   =====================================\n");
     printf("                         NO            \        NAMA  \n\n");
                            
                while(tampil!=NULL)
                {
                             printf("     %d     \       %s\n\n",tampil->no,tampil->nama);  
                 tampil=tampil->next;
                 }
      }

void sisip_sebelum() {
      dtamu *bef;
      dtamu *pbef;
      int x;
          printf("\n");
          if(allocated_dtamu==0){
           printf("Pemesanan Memori GAGAL\n");
            exit(0);
           }
            fflush(stdin);
          system("CLS");
           printf("Data tersebut akan disisipkan sebelum Tamu.no?");scanf("%d",&x);
           system("CLS");
             bef=head;   
      if(head->no==x){
       p->next=head;
       head=p;
       }
       else {
         do {
              pbef=bef;
                       if(bef->next==NULL)
                       {
                        printf("data %d tidak ada dalam linked list\n",x);
                                     exit(0);
                        }
                        else {
                          bef=bef->next;
                        }
              }
              while(bef->no!=x);
                                 p->next=bef;
                                 pbef->next=p;
         }
       }
      
void sisip_sesudah() {
     int x;
     dtamu *after;
          if(allocated_dtamu==0) {
            printf("pemesanan memori GAGAL\n");
            exit(0);
          }
          after=head;
                      printf("\n");
                       system("CLS");
                      printf("Data akan disisipkan setelah Tamu.no?"); scanf("%d",&x);
                       system("CLS");
          while(after->no!=x) {
          if(after->next==NULL)
               printf("Data tidak ada dalam linked list\n");
          else
               after=after->next;
          }
               p->next=after->next;
                                    after->next=p;
          }         
         
void del() {
      int pil;
          printf("\n");
          printf("MENU HAPUS\n");
          printf("================================\n");
          printf("1.Hapus Awal               \n");
          printf("2.Hapus Akhir\n");
          printf("3.Hapus Tengah\n");
          printf("================================\n");
          printf("Masukkan Pilihan Anda [1..4] : "); scanf("%d",&pil);
          switch(pil) {
                     case 1:
                           system("CLS");
                          del_awal();
                          tampil();
                          break;
                     case 2:
                           system("CLS");
                          del_akhir();
                          tampil();
                          break;
                     case 3:
                           system("CLS");
                          del_tengah();
                          tampil();
                          break;
          }
      }
     
void del_awal() {
      dtamu *hapus;
      hapus=head;
      head=hapus->next;
      free(hapus);
      hapus=NULL;
      }
    
void del_akhir()   {
      dtamu *prev;
      dtamu *hapus;
      hapus=head;
      while(hapus->next!=NULL)   {
             prev=hapus;
             hapus=hapus->next;
      }
             prev->next=NULL;
             free(hapus);
             hapus=NULL;
     }
    
void del_tengah()   {
      int x;
      dtamu *prev;
      dtamu *hapus;
      prev=head;
       system("CLS");
                printf("setelah Tamu.no ke berapa yang ingin di hapus?"); scanf("%d",&x);
                while(prev->no!=x) {
                  if(prev->next==NULL)
                                       printf("Tamu no.%d tidak ada dalam linked list\n",x);
                  else   {
                   prev=prev->next;
                   }
               }
               hapus=prev->next;
               prev->next=NULL;
               free(hapus);
               hapus=NULL;
}

void listkosong(){
    system("cls");   
    printf("              List Kosong               \n");
    printf("   Masukkan Data Terlebih Dahulu      \n\n\n");
}

void cari()
{
     int no;
     char nama[20];
  char cari[24];
  dtamu *nmbantu;
  int ketemu;
  if(head==NULL)  {     
   listkosong();
  }
  else {
   printf("    \n ");
   printf("  Masukkan no Tamu   : ");fflush(stdin);scanf("%d",&p->no);
   printf("   Masukkan Nama Tamu : ");fflush(stdin);gets(cari);
   nmbantu = head;
   ketemu = 0;
   while(ketemu==0 && nmbantu != NULL)
   {
   if(strcmpi(cari,nmbantu->nama)==0)
      ketemu = 1;
   else
      nmbantu = nmbantu->next;
   }
   if(ketemu==1)
   {
     printf("                 \n\n\n");
     printf("                             List yang Dicari     \n");
     printf("                           ====================           \n");
     printf("                 \n");
     printf("                 \n");
     printf("                               %d   \     %s  \n\n",nmbantu->no,nmbantu->nama);
   }
   else {
    system("cls");      
   printf("                                           \n");
   printf(" Maaf, List yang Anda Cari Tidak Ditemukan \n");
   printf("                                           \n");
   }
 }
}
void urut()
{
char temp[10];
bantu=tail;
while(bantu!=tail)
{
bantu2=bantu->next;
while(bantu2!=NULL){
if(strcmp(bantu2->nama, bantu->nama)>=0){
strcpy(temp, bantu->nama);
strcpy(bantu2->nama, bantu->nama);
strcpy(bantu->nama, temp); }
bantu2=bantu2->next;
}
bantu=bantu->next;