LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA II
MODUL III
IMPLEMENTASI LINKED LIST PADA
STACK
Disusun Oleh :
Syukur Jaya Mendrofa 201501072
Kelas: C
Dosen Pengampu :
Oskar Ika Adi Nugroho, ST., MT
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”
PURWOKERTO
BAB I
DASAR TEORI
1. LINKED LIST (SENARAI BERANTAI)
Linked list (list bertaut) adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).
2. STACK (TUMPUKAN)
Stack atau tumpukan merupakan bentuk khusus dari Linier List yang pemasukan dan penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari
List (Top).
Prinsip Stack adalah
LAST-IN-FIRST-OUT (LIFO)
OPERASI STACK
1. ISEMPTY : Untuk memeriksa apakah stack kosong.
2. ISFULL : Untuk memeriksa apakah stack sudah penuh.
3. PUSH : Untuk menambahkan item pada posisi paling atas (TOP).
4. POP : Untuk menghapus item paling atas (TOP).
BAB II
TUGAS
Listing Program
#include<iostream>
#include<stdlib.h>
#include<stack>
using namespace std; typedef struct Node
{
int data;
struct Node *link;
}node;
node *head = NULL; void Reverse();
void insert(int data, int position);
void print();
int main() {
insert(8, 1);
insert(3, 2); insert(5, 3);
insert(2, 4);
print(); Reverse();
printf("SETELAH DI REVERSE \n");
printf("\n");
print();
printf("____________________\n");
printf("\n");
printf("____________________"); printf("\n");
system("pause");
return 0;
}
void insert(int data, int position)
{
node *temp = (node*)malloc(sizeof(node)); temp->data = data;
temp->link = NULL;
if (position == 1)
{
temp->link = head;
head = temp; return;
}
node *baru = head;
for (int i = 0; i<position - 2; i++)
{
baru = baru->link;
}
temp->link = baru->link;
baru->link = temp; }
void print()
{
node *p = head;
while (p)
{
p = p->link; }
printf(" \n \n ");
}
void Reverse()
{
stack<node*> S;
node *newtemp = head;
while (newtemp != NULL) {
S.push(newtemp);
newtemp = newtemp->link;
}
node *temp = S.top();
head = temp; S.pop();
while (!S.empty())
{
temp->link = S.top();
S.pop();
temp = temp->link; }
temp->link = NULL;