pengertian dan coding push and pop dengan prinsip stack and queu

Singly Linked List 
Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data.Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.

struct data {
     int x;
     struct data *next;
}head=NULL,*tail,*curr;

1.Push depan artinya kita menambahkan sebuah data pada bagian depan atau samping kiri program.

Void pushDepan(int y){
     curr =(struct data*)malloc(sizeof(structdata));
     curr->x=y;
     if(head==NULL){
         head=tail=curr;
}else{
    curr->next=head;
    head=curr;
}
tail->next=NULL;
}

2.Push Belakang artinya kita  menambahkan sebuah data pada bagian belakang atau samping kanan program.

Void pushBelakang(int y){
     curr =(struct data*)malloc(sizeof(structdata));
     curr->x=y;
     if(head==NULL){
         head=tail=curr;
}else{
    tail->next=curr;
    tail=curr;
}
tail->next=NULL;
}

3.Push sembarang artinya kita bisa menambahkan sebuah data di sembarang tempat pada bagian samping kiri atau kanan sebuah head atau tail.

void ins_s(node **head,node **tail, int data, int posisi){
node *temp=(node*)malloc(sizeof(node));
node *cari=*head;
temp->next=NULL;
temp->data=data;
if(*head==NULL){
 
*head=*tail=temp;
 
}else{
while (posisi– && cari->next!=NULL) cari=cari->next; //mencari posisi sesuai input
temp->next=cari->next;
cari->next=temp;
if(cari==*tail) *tail=cari->next; //jika posisi == tail maka tail perlu diatur
}
}

4.Pop Depan artinya kita menghaps atau delete sebuah data pada bagian depan atau sebelah kiri.

Void popDepan(){
   if(head!=NULL){
//node sisa 1
   if(head==tail){
      free(head);
      head=NULL;
}else{
      curr=head;
      head=head->next;
      free(curr);
}
}
}
5.Pop Belakang artinya kita meghapus atau delete sebuah data pada bagian belakang atau sebelah kanan.

Void popBelakang(){
   if(head!=NULL){
//node sisa 1
   if(head==tail){
      free(head);
      head=NULL;
}else{
      curr=head;
while(curr->next!=tail){
      curr=curr->next;
      }
      free(tail);
      tail=curr;
tail->next=NULL;
}
}
}

6.Pop sembarang artinya ktia menghapus atau delet sebuah data pada sembarang bagian  bisa samping kiri atau kanan pada head atau tail

void del_t(node **head, node**tail,int posisi){
node *temp, *bantu=*head;
if(*head==*tail){
*head=*tail=NULL;
free(temp);
}else{
while(bantu->next!=NULL && posisi–) { //untuk mencari posisi tetapi juga jika posisi tidak melebihi jumlah data
temp=bantu;
bantu=bantu->next;
}
temp->next=bantu->next;
if(bantu==*tail) *tail=temp; //jika data sama dengan tail, tail perlu dipindahkan
free(bantu);
}
}



Stack adalah struktur data penting yang menyimpan elemen-elemennya secara teratur


Analogy:
 Anda pasti melihat tumpukan piring di mana satu piring diletakkan di atas yang lain. Saat Anda ingin melepas piring, Anda harus melepas pelat paling atas terlebih dahulu. Oleh karena itu, Anda dapat menambah dan menghapus elemen (yaitu pelat) hanya di / dari satu posisi yang merupakan posisi paling atas.
-Queu adalah struktur data penting yang menyimpan elemen-elemennya secara teratur.
-Contoh : Orang bergerak di eskalator. Orang-orang yang naik eskalator akan menjadi orang pertama yang keluar dari eskalator.

Sumber :
binusmaya.


Comments