Skip to content

Commit f040388

Browse files
authored
Merge pull request #8 from yusuf601/main
feat: mengubah method insert after
2 parents c2bd357 + 9c76615 commit f040388

File tree

4 files changed

+39
-56
lines changed

4 files changed

+39
-56
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ cmake-build-*/
44
out/
55
Release/
66
Debug/
7-
7+
# bin
8+
bin
89
# Binary output (keep bin structure but ignore contents during development)
910
bin/*.exe
1011
bin/*.a

compile.sh

Lines changed: 15 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,18 @@
11
#!/bin/zsh
2-
set -e
3-
compile_head(){
4-
echo "Sedang mengkompilasi header..."
5-
# Asumsi Anda berada di direktori utama, pindah ke 'header'
6-
cd header
7-
clang++ -c forward_list.hpp -o ../bin/header.o
8-
# Kembali ke direktori utama
9-
cd ..
10-
}
11-
compile_imp(){
12-
echo "direktori saat ini $pwd"
13-
echo "Sedang mengkompilasi implementasi..."
14-
# Asumsi Anda berada di direktori utama, pindah ke 'implementation'
15-
cd implementation
16-
clang++ -c implementation.cpp -o ../bin/imp.o
17-
# Kembali ke direktori utama
18-
cd ..
19-
}
2+
set -euo pipefail
203

21-
linking(){
22-
echo "Sedang melakukan proses linking..."
23-
# Gunakan path yang benar ke file objek
24-
clang++ ./bin/header.o ./bin/imp.o -o ./bin/res
25-
}
4+
CXX=clang++
5+
# ZSH: pakai array agar tiap flag jadi argumen terpisah
6+
CXXFLAGS=(-std=c++20 -O2 -Wall -Wextra -pedantic -Iheader)
7+
BIN_DIR=bin
268

27-
jalankan(){
28-
echo "Menyelesaikan semua kompilasi."
29-
echo "Direktori saat ini: "
30-
pwd
31-
echo "Menjalankan program..."
32-
clear
33-
# Panggil file executable yang berada di direktori 'bin'
34-
./bin/res
35-
}
36-
run(){
37-
# Buat direktori 'bin' jika belum ada
38-
if [ ! -d "bin" ]; then
39-
mkdir bin
40-
fi
41-
compile_head
42-
compile_imp
43-
linking
44-
jalankan
45-
}
46-
# Mulai eksekusi
47-
run
9+
mkdir -p "$BIN_DIR"
10+
11+
echo "Sedang mengkompilasi implementation (dengan header)..."
12+
$CXX $CXXFLAGS -c implementation/implementation.cpp -o "$BIN_DIR/imp.o"
13+
14+
echo "Sedang melakukan proses linking..."
15+
$CXX $CXXFLAGS "$BIN_DIR/imp.o" -o "$BIN_DIR/res"
16+
17+
echo "Menjalankan program..."
18+
"./$BIN_DIR/res"

header/forward_list.hpp

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ class forward_lists{
103103
Iterator end(){
104104
return Iterator(nullptr);
105105
}
106+
Iterator cbegin()const{
107+
return Iterator(head);
108+
}
109+
Iterator cend()const{
110+
return Iterator(nullptr);
111+
}
106112
public: //getter
107113
T front(){
108114
return head->data;
@@ -126,23 +132,19 @@ class forward_lists{
126132
/**
127133
* @brief insert after
128134
*/
129-
void insert_after(T begin,T val){
130-
Node* curr = head;
131-
while(curr != val){
132-
curr = curr->next;
133-
}
135+
void insert_after(Iterator iter_position,T val){
136+
Node* curr = iter_position;
137+
++curr; //pre increment
134138
if(curr == nullptr){
135139
return;
136140
}
137141
Node* new_node = new_node(val);
138142
new_node->next = curr->next;
139143
curr->next = new_node;
140144
}
141-
void insert_after(T begin,int n,T val){
142-
Node* curr = head;
143-
while(curr != nullptr){
144-
curr = curr->next;
145-
}
145+
void insert_after(Iterator Iterator_position,int n,T val){
146+
Node* curr = Iterator_position;
147+
++curr;
146148
if(curr == nullptr){
147149
return;
148150
}
@@ -165,8 +167,13 @@ class forward_lists{
165167
curr->next = new_node;
166168
}
167169
}
170+
// void insert_after(Iterator begin,T itr1,T itr2){
171+
// for(auto it = itr1; it != itr2;++it){
172+
// auto value = *it;//deferencing
173+
// }
174+
// }
168175
public:
169-
void print_all(T begin,T end){
176+
void print_all(Iterator begin,Iterator end){
170177
while(begin != end){
171178
std::cout << *begin << " ";
172179
++begin;

implementation/implementation.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#include <iostream>
22
#include "../header/forward_list.hpp"
33
int main(){
4+
//initializer list
5+
forward_lists<int>lst = {1,2,3};
6+
lst.print_all(lst.begin(),lst.end());
7+
//memanggil default constructor
48
forward_lists<int>fl;
59
fl.push_front(1);
610
fl.push_front(2);

0 commit comments

Comments
 (0)