Langsung ke konten utama

Pertemuan ke 1 - Pointer, Array and Introduction to Data Structure - 2101682242 - Mohammad Refardy

 Course Description


Kursus ini memberi siswa konsep dasar struktur data yang akan sering digunakan dalam praktik rekayasa perangkat lunak dan pemrograman, konsep array, struktur, tumpukan, antrian, grafik, dan trees.

Sub Topics
Pointer, Array and Introduction to Data Structure
• Array Review
• Pointer Review
• Types of Data Structures
• Abstract Data Type


Array
• Kumpulan elemen data yang serupa
• Elemen data ini memiliki tipe data yang sama (homogen)
• Elemen array disimpan di lokasi memori berturut-turut dan direferensikan oleh indeks
• Indeks Array dimulai dari nol

Array Declaration & Accessing Array
One Dimensional Array
Declaration:
int arr[5];

Syntax:
type name[size];
An array of size N have indexes from 0 to N-1.

Accessing:                     
-arr[0] = 7;
-arr[1] = 2;
-arr[2] = 13;
-arr[3] = 13;
-arr[4] = 13;

• Two Dimensional Array
• Declaration:

• int arr[3][6];

Syntax:
  type name[size1][size2];
The first index of array ranged from 0 to size1 – 1.
The second index of array ranged from 0 to size2 – 1.

• Accessing:

-arr[0][2] = 2;
arr[2][1] = 9;
-arr[1][5] = 13;
-arr[2][4] = 10;
Multi Dimensional Array
Declaration:
int arr[4][3][7][10];

Accessing:
-arr[0][2][2][9]= 2;
-arr[2][1][6][0]= 9;
-arr[3][0][0][6]= 13;
-arr[2][1][3][8]= 10;

Storing Array Values

Initialization of Arrays
  Example:  int marks[5] = {90, 82, 78, 95, 88};
Inputting Values
  Example:  
  int i, marks[10];
  for (i=0; i<10; i++)
  scanf(“%d”, &marks[i]);
Assigning Values
  Example:  
  int i, arr1[10], arr2[10];
  for(i=0; i<10; i++)
  arr2[i] = arr1[i];

Operations in Array

Ada sejumlah operasi yang bisa dilakukan
pada array ialah:

-Traversal
-Insertion
-Searching
-Deletion
-Merging
-Sorting

Pointer
Pointer adalah tipe data yang nilainya mengacu pada nilai lain yang tersimpan
Di tempat lain dalam memori komputer menggunakan alamatnya.
Dua operator terpenting yang digunakan dengan tipe pointer adalah: 

• & operator alamat
• operator dereferencing

If we have the declaration:
  int x;
 int *px;
  then x is an integer and px is a pointer to an integer. If we say:
  px  = &x;
then &x returns the address of x and assigns it as the value of px.
To assign a value of x we can say
  x = 10;
or
  *pi = 10;

What is the output of this program?
int a  = 10;
int *p = &a;
printf( “%d\n”, *p );
a  = 17;
*p = 20;
printf( “%d\n”, a );

Data Structure

• Struktur data adalah susunan data, baik dalam memori komputer maupun pada penyimpanan disk.
• Beberapa contoh umum dari struktur data meliputi:

Arrays
Linked lists
Queues
Stacks
Binary trees
Hash tables

Types of Data Structure

Arrays

- Kumpulan elemen data yang serupa

-Data elemen memiliki tipe data yang sama

Linked Lists

-Sebuah struktur data yang sangat dinamis dimana elemen dapat ditambahkan ke atau dihapus dari mana saja sesuka hati
-Setiap elemen disebut node

Queue

- Unsur yang disisipkan pertama adalah yang pertama dibawa keluar
- Elemen dalam antrian ditambahkan pada salah satu ujungnya yang disebut bagian belakang dan dilepas dari ujung yang disebut front

Stack

-Stack dapat direpresentasikan sebagai array linier
-Setiap stack memiliki variabel TOP yang terkait dengannya
-LIFO (Last In First Out) / FILO (Pertama di Last Out)

Binary Trees

-Sebuah struktur data yang didefinisikan sebagai kumpulan elemen yang disebut node
-Setiap node berisi pointer kiri, pointer kanan, dan elemen data
Data Type

Data Type  adalah kumpulan objek dan sekumpulan operasi yang bekerja pada objek tersebut.
• Misalnya, tipe data int terdiri dari:
• objek: 0, +1, -1, +2, -2, dll
• operasi: +, -, *, /,%, dll
• Contoh tipe data yang telah ditentukan adalah int, char, float.

Abstract Data Type

Abstract Data Type adalah tipe data yang disusun sedemikian rupa sehingga spesifikasi objek dan spesifikasi operasi pada objek dipisahkan dari representasi objek dan pelaksanaan operasi.
• C / C ++ memiliki konsep yang disebut class dan struct yang membantu programmer dalam mengimplementasikan tipe data abstrak.

Example of ADT

• Seharusnya kita ingin membuat ADT bilangan natural yang memiliki bilangan bulat sebagai objek dan beberapa fungsinya sebagai operasi.

• Struktur Nomor adalah

  objects  : 
   an integer x
  functions  :
  bool is_zero()  if ( x == 0 ) return TRUE else return FALSE
  bool equal(y)  if ( x == y ) return TRUE else return FALSE
  void set(y)  x = y
  void add(y)  x = x + y  int get ()    return x

Introduction to Linked List

Sub Topics

-Structure Declaration
-Structure Assignments
-Nested Structure
-Array of Structure
-Memory Allocation
-Linked List Introduction
-Linked List versus Array

Structure

Structure pada dasarnya adalah tipe data yang ditentukan pengguna yang dapat menyimpan informasi terkait (bahkan dari tipe data yang berbeda) bersama-sama, sementara array hanya dapat menyimpan entitas dari tipe data yang sama.
• Ini adalah kumpulan variabel dengan satu nama.
• Variabel dalam struktur memiliki tipe data yang berbeda dan masing-masing memiliki nama yang digunakan untuk memilihnya dari struktur.

Structure Declaration

struct tdata {
int   age;
char  name[100];
float score;

The code above defines a structure named tdata which has three members: age (int), name (char[]) and score (float).
Creating a variable of structure is similar to create a variable of primitive data type.
tdata x;    // a variable of tdata
tdata arr[100];  // an array of tdata
You also can define a structure as well as declare variables.
struct tdata {
int   age;
 char  name[100];
float score;
} a, b;

The code on the left is equal to:

struct tdata {
  int   age;
  char  name[100];
  float score;
};
tdata a;
tdata b;

Structure Assignments

tdata x;

You can use operator . (dot) to access member of x

x.age = 17;
strcpy(x.name, “andi”);
x.score = 82.5;

Nested Structure

You also can have a structure as a member of another structure
struct profile {
  int   age;
  char  name[100];
};
  struct student { 
  struct profile p; 
  int  score; 
  char grade;
};

Array of Structure

You also can have an array of structure.

struct profile {
  int   age;
  char  name[100];
};
struct student {
  struct profile p;
  int  score;
  char grade;
};

Memory Allocation: Dynamic

If you need to allocate memory dynamically (in runtime), you can
use malloc in C/C++. To de-allocate you can use free.
int  *px = (int *) malloc(sizeof(int));
char *pc = (char *) malloc(sizeof(char));
*px = 205;
*pc = ‘A’;
printf( “%d %c\n”, *px, *pc );
free(px);
free(pc);

Linked List Introduction

Linked list  adalah struktur data yang terdiri dari urutan data
catatan seperti itu setiap record ada field yang berisi a
mengacu pada rekaman berikutnya dalam urutan.

Linked List versus Array

Array:

• Kumpulan data elemen linier
• Simpan nilai di lokasi memori berturut-turut
• Dapat acak dalam mengakses data


Linked List:

Kumpulan node linier
Tidak menyimpan simpulnya di lokasi memori berturut-turut
Dapat diakses hanya secara berurutan

Komentar

Postingan populer dari blog ini

Pertemuan ke 5 - Tree and Binary Tree - 2101682242 - Mohammad Refardy

Sub Topics Tree & Binary Tree: -         Type of Binary Tree -         Property of Binary Tree -         Representation of Binary Tree -         Threaded Binary Tree Concept Binary Tree Concept Contoh binary tree dari 9 node, yang di-root simpul yang berisi 18. leaves adalah simpul yang mana mengandung 9, 12, 10, dan 23   Type of Binary Tree PERFECT binary tree adalah pohon biner di mana setiap tingkat berada pada kedalaman yang sama. COMPLETE binary tree adalah pohon biner di mana setiap tingkat, kecuali mungkin yang terakhir, benar-benar terisi, dan semua node berada paling kiri mungkin. Pohon biner yang sempurna adalah pohon biner lengkap. SKEWED binary tree adalah pohon biner di mana setiap simpul memiliki paling banyak satu anak. BALANCED binary tree adalah pohon biner di mana tidak ada daun ya...

Pertemuan ke 2 - Linked List Implementation - 2101682242 - Mohammad Refardy

Sub Topics Linked List: - Single Linked List - Polynomial Representation - Circular Single Linked List - Doubly Linked List - Circular Doubly Linked List -Header Linked List  Single Linked List Untuk membuat daftar, pertama kita perlu mendefinisikan struktur simpul untuk daftar. Seharusnya kita ingin membuat daftar bilangan bulat. struct tnode { nilai int; struct tnode * next; }; struct tnode * head = 0; Single Linked List: Insert Untuk menyisipkan nilai baru, pertama kita harus mengalokasikan node baru secara dinamis dan memberikan nilai padanya dan kemudian menghubungkannya dengan linked list yang ada. Seharusnya kita ingin menambahkan simpul baru di depan kepala. struct tnode * node = (struct tnode *) malloc (sizeof (struct tnode)); node-> nilai = x; node-> next = head; kepala = simpul; Single Linked List: Delete Untuk menghapus sebuah nilai, pertama kita harus mencari lokasi node yang menyimpan nilai yang ingin kit...

Pertemuan ke 3 - Linked List Implementation II - 2101682242 - Mohammad Refardy

Sub Topic Stack: -         Stack Concept -         Stack using Array and Linked List -         Infix, Postfix and Prefix Notation -         Evaluation -         Conversion -         Depth First Search -         Queue Concept -         Queue using Array and Linked List -         Priority Queues -         Breadth First Search Stack Concept Stack adalah struktur data penting yang menyimpan unsur-unsurnya secara teratur Analogi: Anda pasti pernah melihat setumpuk piring tempat piring diletakkan di atas yang lain. Bila Anda ingin melepaskan piring, Anda melepaskan piring paling atas terlebih dahulu. Oleh karena ...