Skip to content

Commit 7e0d512

Browse files
authored
Merge pull request #29 from yusuf601/main
feat: menambahkan method swap stack linked list
2 parents d51691a + a0302b7 commit 7e0d512

File tree

4 files changed

+67
-0
lines changed

4 files changed

+67
-0
lines changed

case_study/advanced/m

-45.5 KB
Binary file not shown.

iterator/introduce_iterator.cpp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include <iostream>
2+
#include <vector>
3+
#include <list>
4+
/**
5+
* @brief ITERATOR
6+
* iterator adalah pointer pintar yang mununjuk element dalam suatu container
7+
* iterator begin selalu mununjuk element pertama
8+
* iterator end selalu mununjuk element terakhir
9+
*/
10+
11+
void _iterator(){
12+
/*
13+
iterator vector di sebut bidirectional iterator karena dapat bergerak maju dan mundur
14+
*/
15+
std::vector<int>v = {1,2,3,4,5};
16+
std::vector<int>::iterator it; //deklarasi iterator
17+
//akan mencetak element pada array v
18+
for(it = v.begin();it != v.end();++it){
19+
std::cout << *it << " ";
20+
}
21+
std::cout << std::endl;
22+
//akan mencetak alamat memory
23+
for(it = v.begin();it != v.end();it += 2){
24+
std::cout << &it << " ";
25+
}
26+
/*
27+
it selalu menunjuk alamat memory dari vector v
28+
*it arti nya melakukan deferencing terhadap alamat memory tersebut
29+
*/
30+
std::list<int>l= {1,2,3,4,5,6,7};
31+
std::list<int>::iterator lst;
32+
std::cout << std::endl;
33+
/**
34+
* list hanya dapat bergerak satu arah karena memakai linked list
35+
* linked list menyimpan data secara tidak beraturan,semua data tersebar di heap
36+
* tp masing node punya alamat ke node berikut nya.
37+
* berbeda dengan array yg berurutan di heap atau di stack
38+
*/
39+
for(lst = l.begin();lst != l.end();lst++){
40+
std::cout << *lst << " ";
41+
}
42+
}
43+
int main(){
44+
_iterator();
45+
//std::cin.get();
46+
return 0;
47+
}

src/m

-16.6 KB
Binary file not shown.

src/stack_linked_list.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*
1111
* @version 2.0
1212
*/
13+
1314
#include <iostream>
1415
#include <stdexcept>
1516
template <typename type>
@@ -68,6 +69,15 @@ class Stack{
6869
~Stack()noexcept{
6970
clear();
7071
}
72+
void swap(Stack& others){
73+
//swap head
74+
Node* tempHead = head;
75+
head = others.head;
76+
//swap size
77+
int tempSize = size;
78+
size = others.size;
79+
others.size = tempSize;
80+
}
7181
public://abstraksi getter
7282
int is_size()const noexcept{
7383
return this->size;
@@ -162,6 +172,16 @@ int main(){
162172
stack3 = stack1;
163173
std::cout << "copy assignment" << std::endl;
164174
stack3.print_detail();
175+
Stack<int> stack4;
176+
stack4.push(10);
177+
stack4.push(20);
178+
stack4.push(30);
179+
stack4.push(40);
180+
std::cout << "sebelum swap" << std::endl;
181+
stack4.print_detail();
182+
stack4.swap(stack1);
183+
std::cout << "sesudah swap" << std::endl;
184+
stack4.print_detail();
165185
std::cin.get();
166186
return 0;
167187
}

0 commit comments

Comments
 (0)