Repository navigation
Expand file tree
/
Copy patharray.h
More file actions
92 lines (81 loc) · 3.38 KB
/
Copy patharray.h
File metadata and controls
92 lines (81 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/* MODUL TABEL INTEGER */
/* Berisi definisi dan semua primitif pemrosesan tabel integer */
/* Penempatan elemen selalu rapat kiri */
/* Versi I : dengan banyaknya elemen didefinisikan secara eksplisit,
memori tabel statik */
#ifndef ARRAY_H
#define ARRAY_H
#include "boolean.h"
/* Kamus Umum */
#define IdxMax 100
/* Indeks maksimum array, sekaligus ukuran maksimum array dalam C */
#define IdxMin 1
/* Indeks minimum array */
#define IdxUndef -999
/* Indeks tak terdefinisi*/
/* Definisi elemen dan koleksi objek */
typedef int IdxType; /* type indeks */
typedef char ElType; /* type elemen tabel */
typedef struct {
ElType TI[IdxMax+1]; /* memori tempat penyimpan elemen (container) */
int Neff; /* >=0, banyaknya elemen efektif */
} TabChar;
/* Indeks yang digunakan [IdxMin..IdxMax] */
/* Jika T adalah TabChar, cara deklarasi dan akses: */
/* Deklarasi : T : TabChar */
/* Maka cara akses:
T.Neff untuk mengetahui banyaknya elemen
T.TI untuk mengakses seluruh nilai elemen tabel
T.TI[i] untuk mengakses elemen ke-i */
/* Definisi :
Tabel kosong: T.Neff = 0
Definisi elemen pertama : T.TI[i] dengan i=1
Definisi elemen terakhir yang terdefinisi: T.TI[i] dengan i=T.Neff */
/* ********** SELEKTOR ********** */
#define Neff(T) (T).Neff
#define TI(T) (T).TI
#define Elmt(T,i) (T).TI[(i)]
/* ********** KONSTRUKTOR ********** */
/* Konstruktor : create tabel kosong */
void MakeEmpty (TabChar * T);
/* I.S. T sembarang */
/* F.S. Terbentuk tabel T kosong dengan kapasitas IdxMax-IdxMin+1 */
/* ********** SELEKTOR (TAMBAHAN) ********** */
/* *** Banyaknya elemen *** */
int NbElmt (TabChar T);
/* Mengirimkan banyaknya elemen efektif tabel */
/* Mengirimkan nol jika tabel kosong */
/* *** Daya tampung container *** */
int MaxNbEl (TabChar T);
/* Mengirimkan maksimum elemen yang dapat ditampung oleh tabel */
/* ********** TEST KOSONG/PENUH ********** */
/* *** Test tabel kosong *** */
boolean IsEmpty (TabChar T);
/* Mengirimkan true jika tabel T kosong, mengirimkan false jika tidak */
/* *** Test tabel penuh *** */
boolean IsFull (TabChar T);
/* Mengirimkan true jika tabel T penuh, mengirimkan false jika tidak */
void TulisIsiTab (TabChar T);
/* Proses : Menuliskan isi tabel dengan traversal, tabel ditulis di antara kurung siku;
antara dua elemen dipisahkan dengan separator "koma", tanpa tambahan karakter di depan,
di tengah, atau di belakang, termasuk spasi dan enter */
/* I.S. T boleh kosong */
/* F.S. Jika T tidak kosong: [e1,e2,...,en] */
/* Contoh : jika ada tiga elemen bernilai 1, 20, 30 akan dicetak: [1,20,30] */
/* Jika tabel kosong : menulis [] */
boolean SearchB (TabChar T, ElType X);
/* Search apakah ada elemen tabel T yang bernilai X */
/* Jika ada, menghasilkan true, jika tidak ada menghasilkan false */
/* Memakai Skema search DENGAN boolean */
/* ********** OPERASI LAIN ********** */
void CopyTab (TabChar Tin, TabChar * Tout);
/* I.S. Tin terdefinisi, Tout sembarang */
/* F.S. Tout berisi salinan dari Tin (elemen dan ukuran identik) */
/* Proses : Menyalin isi Tin ke Tout */
/* ********** MENAMBAH ELEMEN ********** */
/* *** Menambahkan elemen terakhir *** */
void AddAsLastEl (TabChar * T, ElType X);
/* Proses: Menambahkan X sebagai elemen terakhir tabel */
/* I.S. Tabel T boleh kosong, tetapi tidak penuh */
/* F.S. X adalah elemen terakhir T yang baru */
#endif