PROGRAM 1
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
NODPTR NodBaru(int m)
{
NODPTR n;
n = (NODPTR)malloc(sizeof(NOD));
if (n != NULL)
{
n->data = m;
n->next = NULL;
}
return n;
}
void CetakSenarai(NODPTR s)
{
NODPTR ps;
for (ps = s; ps != NULL; ps = ps->next)
printf("%d --> ", ps->data);
printf("NULL\n");
}
int main()
{
NODPTR pel;
NODPTR n;
int i, k, nilai;
CiptaSenarai(&pel);
printf("Masukkan Banyak Data : ");
scanf_s("%d", &k);
PROGRAM 2
#include "stdafx.h"
#include <iostream>
#include <string>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
class Simpul
{
public:
string kode;
string nama;
Simpul* berikut;
// Konstruktor
Simpul(string xkode, string xnama)
{
kode = xkode;
nama = xnama;
berikut = NULL;
}
void display()
{
cout << kode << " : " << nama << endl;
}
};
class SenaraiBerantai
{
private:
Simpul* pertama;
public:
// Konstruktor
SenaraiBerantai()
{
pertama = NULL;
}
// Destruktor
~SenaraiBerantai()
{
// Menghapus semua simpul
Simpul* penunjukHapus;
while (pertama != NULL)
{
penunjukHapus = pertama;
pertama = pertama->berikut;
delete penunjukHapus;
}
}
ptrBaru->berikut = pertama;
pertama = ptrBaru;
}
// Mencari data
//Nilai balik berupa true kalau yang dicari ketemu
// Dalam hal ini, pendahulu merupakan simpul yang
// terletak di depan simpul yang dicari
bool find(Simpul* &pendahulu, Simpul* &posisiData, string x)
{
posisiData = pertama;
pendahulu = NULL;
bool ditemukan = false;
while (posisiData != NULL)
{
string kode = posisiData->kode;
if (kode.compare(x) == 0)
{
ditemukan = true;
break; // Keluar dari while
}
pendahulu = posisiData;
posisiData = posisiData->berikut;
}
return ditemukan;
}
//Mencari data
//Nilai balik berupa NULL kalau yang dicari tidak ketemu
Simpul* find(string x)
{
Simpul* pendahulu;
Simpul* posisiData;
bool ditemukan = find(pendahulu, posisiData, x);
if (!ditemukan)
return NULL;
else
return posisiData;
}
if (pendahulu == NULL)
{
// Data yang dihapus ditunjuk oleh pertama
pertama = pertama->berikut;
delete posisiData;
}
else
{
// Data yang dihapus tidak ditunjuk oleh pertama
pendahulu->berikut = posisiData->berikut;
delete posisiData;
}
}
//Menampilkan data
void display(void)
{
cout << "Isi senarai berantai : " << endl;
int main()
{
SenaraiBerantai senarai;
// Masukkan 5 buah nama
senarai.insert("AMN", "Aminudin");
senarai.insert("ZAS", "Zaskia");
senarai.insert("RIN", "Rina Melati");
senarai.insert("FAR", "Farhan");
senarai.insert("AGN", "Agnes Monica");
cout << "Keadaan awal:" << endl;
senarai.display();
senarai.remove("RIN");
cout << endl;
cout << "Setelah RIN dihapus:" << endl;
senarai.display();
// Cari RIN
string dicari = "RIN";
cout << endl;
cout << "Pencarian " << dicari << endl;
Simpul* posisiData = senarai.find(dicari);
if (posisiData == NULL)
cout << dicari << " tidak ditemukan." << endl;
else
{
cout << "Hasil pencarian: " << endl;
posisiData->display();
}
// Cari FAR
dicari = "FAR";
cout << endl;
cout << "Pencarian " << dicari << endl;
posisiData = senarai.find(dicari);
if (posisiData == NULL)
cout << dicari << "tidak ditemukan." << endl;
else
{
cout << "Hasil pencarian : " << endl;
posisiData->display();
}
_getch();
}
PROGRAM 3
#include "stdafx.h"
#include<iostream>
#include <conio.h>
#include<cstdlib>
using namespace std;
class Graph
{
// Function to allocate a new node for the adjacency list
Node* getAdjListNode(int dest, Node* head)
{
Node* newNode = new Node;
newNode->val = dest;
return newNode;
}
public:
// Constructor
Graph(Edge edges[], int n, int N)
{
// allocate memory
head = new Node*[N]();
this->N = N;
/*
newNode = getAdjListNode(src, head[dest]);
// Destructor
~Graph() {
for (int i = 0; i < N; i++) {
delete[] head[i];
}
delete[] head;
}
};
// construct graph
Graph graph(edges, n, N);
_getch();
}