
This is data structure + algorithm with C language
Description
Book Introduction
From concepts to practice of data structures and algorithms
Let's learn happily without giving up!
Data structures and algorithms are essential skills for passing interviews and coding tests at IT companies.
Learning algorithms will not only help you get a job, but will also help you become a better developer.
However, data structures and algorithms are difficult to learn and are not even fun, so many developers give up learning them halfway.
The goal of "This is Data Structure + Algorithm" is to get readers to read until the last page.
It explains frequently used data structures and algorithm concepts, from lists to backtracking, in a witty way, at a level suitable for beginners.
We have minimized complex formulas that will make you gasp just by looking at them, and included only the formulas that are essential for understanding.
In addition, we have provided various illustrations to help you understand the operating principles at a glance and 108 examples of source code that can be run and verified right away, so that you can fully understand the outline of the algorithm.
Let's learn the key concepts of data structures and algorithms without giving up with "This is Data Structure + Algorithm"!
Let's learn happily without giving up!
Data structures and algorithms are essential skills for passing interviews and coding tests at IT companies.
Learning algorithms will not only help you get a job, but will also help you become a better developer.
However, data structures and algorithms are difficult to learn and are not even fun, so many developers give up learning them halfway.
The goal of "This is Data Structure + Algorithm" is to get readers to read until the last page.
It explains frequently used data structures and algorithm concepts, from lists to backtracking, in a witty way, at a level suitable for beginners.
We have minimized complex formulas that will make you gasp just by looking at them, and included only the formulas that are essential for understanding.
In addition, we have provided various illustrations to help you understand the operating principles at a glance and 108 examples of source code that can be run and verified right away, so that you can fully understand the outline of the algorithm.
Let's learn the key concepts of data structures and algorithms without giving up with "This is Data Structure + Algorithm"!
- You can preview some of the book's contents.
Preview
index
__Author's Note
__The structure of this book
__Learning Roadmap
Chapter 00 Useful Data Structures and Algorithms to Know
_0.1 data structure
_0.2 algorithm
_0.3 How to handle memory in C language
__0.3.1 Pointer Review
__0.3.2 Structure Review
__0.3.3 Memory Layout Review
__0.3.4 How to handle data in the stack
__0.3.5 How to handle data in the heap
Part 01 Data Structures
Chapter 01 List
_1.1 List ADT
__1.1.1 List concept
__1.1.2 Comparing lists and arrays
_1.2 Linked List
__1.2.1 Node representation of linked list
__1.2.2 Key operations of linked lists
___Vitamin Quiz 1-1
__1.2.3 Linked list example program
__1.2.4 Pros and Cons of Linked Lists
___Vitamin Quiz 1-2
_1.3 Doubly linked list
__1.3.1 Key operations of doubly linked lists
__1.3.2 Double-linked list example program
___Vitamin Quiz 1-3
_1.4 Circular Linked List
__1.4.1 Key operations on circular doubly linked lists
__1.4.2 Circular doubly linked list example program
_Practice problems
Chapter 02 Stack
_2.1 Stack ADT
__2.1.1 Stack concept
___Vitamin Quiz 2-1
__2.1.2 Core functions of the stack: insertion and removal operations
_2.2 Stack implemented as an array
__2.2.1 Array-based stacks and node representations of stacks
__2.2.2 Basic operations on array-based stacks
__2.2.3 Array-based stack example program
___Vitamin Quiz 2-2
_2.3 Stack implemented with linked list
__2.3.1 Linked list-based stack and node representation of the stack
__2.3.2 Basic operations of linked list-based stacks
__2.3.3 Linked list-based stack example program
_2.4 Application of Stack: Arithmetic Calculator
__2.4.1 Infix and postfix notation of formulas
__2.4.2 Algorithm for computing postfix notation
__2.4.3 Algorithm for converting infix notation to postfix notation
__2.4.4 Arithmetic Calculator Example Program
_Practice problems
Chapter 03 Queue
_3.1 Queue ADT
__3.1.1 Queue Concept
__3.1.2 Core features of the Queue ADT: Insertion and removal operations
_3.2 Circular Queue
__3.2.1 Blank state and saturation state
__3.2.2 Basic operations of circular queues
__3.2.3 Circular Queue Example Program
_3.3 Linked Queue
__3.3.1 Basic operations of linked queues
__3.3.2 Linked Queue Example Program
_Practice problems
Chapter 04 Tree
_4.1 Tree ADT
__4.1.1 Tree Concept
__4.1.2 Components of a tree
__4.1.3 Tree Representation Method
__4.1.4 Node Representation Method
__4.1.5 Basic operations on trees
__4.1.6 Tree Example Program
___Vitamin Quiz 4-1
_4.2 Binary Tree
__4.2.1 Types of binary trees
__4.2.2 Traversing a binary tree
__4.2.3 Basic operations of binary trees
__4.2.4 Binary Tree Example Program
_4.3 Formula Tree
__4.3.1 How to build a formula tree
__4.3.2 Implementation of the formula tree
__4.3.3 Formula Tree Example Program
_4.4 Separate sets
__4.4.1 Disjoint set representation
__4.4.2 Basic operations on disjoint sets
__4.4.3 Separate set example program
_Practice problems
Part 02 Algorithm
Chapter 05 Sorting
_5.1 Overview of Sorting Algorithms
_5.2 Bubble sort
__5.2.1 Performance Measurement of Bubble Sort
__5.2.2.
Bubble sort example program
___Vitamin Quiz 5-1
_5.3 Insertion sort
__5.3.1 Measuring the performance of insertion sort
__5.3.2 Insertion sort example program
_5.4 Quick sort
__5.4.1 Two issues to address before using quick sort
__5.4.2 Quick sort example program
__5.4.3 Measuring the performance of quick sort
_5.5 Quick sort function in the C language standard library: qsort( )
__5.5.1 qsort( ) function example program
___Vitamin Quiz 5-2
__5.5.2 qsort( ) application problems
_Practice problems
Chapter 06 Exploration
_6.1 Overview of the Search Algorithm
_6.2 Sequential Search
__6.2.1 Forward Movement Method
___Vitamin Quiz 6-1
__6.2.2 Transposition method
___Vitamin Quiz 6-2
__6.2.3 Counting method
___Vitamin Quiz 6-3
_6.3 Binary Search
__6.3.1 Measuring the performance of binary search
__6.3.2 Implementation of binary search
__6.3.3 Binary Search Example Program: Second Final Exam Problem
__6.3.4 Binary search function in the C language standard library: bsearch( )
__6.3.5 bsearch( ) function example program
_6.4 Binary Search Tree
__6.4.1 Binary Search Tree Representation
__6.4.2 Basic operations of binary search trees
__6.4.3 Binary Search Tree Example Program
__6.4.4 Problems with binary search trees
_6.5 Red Black Tree
__6.5.1 Implementation Rules for Red-Black Trees
__6.5.2 Basic operations of red-black trees
__6.5.3 Red-Black Tree Example Program
_Practice problems
Chapter 07 Priority Queues and Heaps
_7.1 Priority Queue
__7.1.1 Insertion/removal operations in priority queues
__7.1.2 Implementation of a priority queue
_7.2 Heap
__7.2.1 Heap insertion operation
__7.2.2 Heap minimum value deletion operation
__7.2.3 Heap Implementation
__7.2.4 Heap Example Program
_7.3 Implementation of a heap-based priority queue
_Practice problems
Chapter 08 Hash Table
_8.1 Hash Table Overview
__8.1.1 Hash
__8.1.2 Hash Table
_8.2 Hash Function
__8.2.1 Division method
__8.2.2 Folding digits
__8.2.3 Limitations of Hash Functions: Collisions
_8.3 Conflict Resolution Techniques
__8.3.1 Chaining
__8.3.2 Open Addressing
_Practice problems
Chapter 09 Graph
_9.1 Overview of the Graph
__9.1.1 Background of the Birth of Graphs: Euler's Problem-Solving Tool
__9.1.2 Definition of graph
___Vitamin Quiz 9-1
_9.2 Graph Representation Methods
__9.2.1 Adjacency matrix
__9.2.2 Adjacency List
___Vitamin Quiz 9-2
_9.3 Graph Traversal Techniques
__9.3.1 Depth-first search
__9.3.2 Breadth-first search
__9.3.3 Graph Traversal Example Program
_9.4 Topological sorting
__9.4.1 How Topological Sorting Works
__9.4.2 Topological sorting example program
_9.5 Minimum spanning tree
__9.5.1 Prim's Algorithm
__9.5.2 Kruskal's algorithm
__9.5.3 Minimum spanning tree example program
_9.6 Finding the Shortest Path: Dijkstra's Algorithm
__9.6.1 Concept of Dijkstra's algorithm
__9.6.2 Dijkstra's Algorithm Example Program
_Practice problems
Chapter 10 String Search
_10.1 Overview of String Search Algorithms
_10.2 Old-fashioned search algorithm
__10.2.1 How the old-fashioned search works
__10.2.2 Example program for a simple search algorithm
_10.3 Karp-Rabin Algorithm
__10.3.1 How the Karp-Rabin Algorithm Works
__10.3.2 Karp-Rabin Algorithm Example Program
_10.4 KMP Algorithm
__10.4.1 How the KMP Algorithm Works
__10.4.2 Boundary Information Pre-Computation Method
__10.4.3 KMP Algorithm Example Program
_10.5 Boyer-Moore Algorithm
__10.5.1 Bad character movement
__10.5.2 Good Suffix Move
__10.5.3 Preprocessing of the Boyer-Moore Algorithm
__10.5.4 Boyer-Moore Algorithm Example Program
_Practice problems
Part 03 Algorithm Design Techniques
Chapter 11 Algorithm Performance Analysis
_11.1 Algorithm performance measurement criteria and execution time
__11.1.1 Algorithm Performance Measurement Criteria
__11.1.2 Algorithm Execution Time Analysis
_11.2 Asymptotic notation
__11.2.1 O notation
__11.2.2 Ω notation
__11.2.3 Θ notation
_11.3 Recursive Algorithm Performance Analysis
__11.3.1 Recursive Equations and Recursive Algorithms
__11.3.2 Performance Analysis of Quick Sort
__11.3.3 Master Cleanup
_Practice problems
Chapter 12 Divide and Conquer
_12.1 Overview of the Divide and Conquer Technique
__12.1.1 Background to the Birth of the Divide and Conquer Tactic: The Battle of Austerlitz
__12.1.2 Concept of divide-and-conquer algorithm
_12.2 Merge Sort
__12.2.1 How merge sort works
__12.2.2 Implementation of the merge sort algorithm
_12.3 Calculating exponents
__12.3.1 Exponentiation Calculation Method
__12.3.2 Implementation of the exponentiation algorithm
_12.4 Finding Fibonacci Numbers Based on Divide and Conquer
__12.4.1 How to find Fibonacci numbers
__12.4.2 How to find Fibonacci numbers using divide and conquer
__12.4.3 Implementation of the divide-and-conquer-based Fibonacci number finding algorithm
Practice problems
Chapter 13 Dynamic Programming
_13.1 Overview of Dynamic Programming
__13.1.1 Background of the Birth of Dynamic Programming
__13.1.2 Concept of dynamic programming
_13.2 Finding Fibonacci Numbers Based on Dynamic Programming
__13.2.1 How to find Fibonacci numbers using dynamic programming
__13.2.2 Implementation of an algorithm for finding Fibonacci numbers based on dynamic programming
_13.3 Longest common subsequence
__13.3.1 LCS Algorithm
__13.3.2 Implementation of the LCS Algorithm Based on Dynamic Programming
_Practice problems
Chapter 14 Greedy Algorithm
_14.1 Overview of the Greedy Algorithm
_14.2 Problem of reducing change
__14.2.1 Example program for calculating change
__14.2.2 Important properties of the greedy algorithm
_14.3 Revisiting Kruskal's Algorithm
_14.4 Revisiting Dijkstra's Algorithm
_14.5 Huffman coding
__14.5.1 Fixed-length codes and prefix codes
__14.5.2 Building a Huffman Tree
__14.5.3 Data Compression
__14.5.4 Decompressing data
__14.5.5 Huffman coding example program
_Practice problems
Chapter 15 Backtracking
_15.1 Overview of Backtracking
__15.1.1 A Case of Backtracking: The Story of Theseus
__15.1.2 The concept of backtracking
_15.2 Finding the Maze Escape Route
__15.2.1 Recursive call-based backtracking
__15.2.2 Implementation of the maze escape algorithm
__15.2.3 Maze escape algorithm example program
_15.3 Eight Queens Problem
__15.3.1 The sea space created by 8 queens and backtracking
__15.3.2 Implementation of an algorithm to solve the N-queen problem
__15.3.3 Example program to solve the N-queen problem
_Practice problems
__Find
__The structure of this book
__Learning Roadmap
Chapter 00 Useful Data Structures and Algorithms to Know
_0.1 data structure
_0.2 algorithm
_0.3 How to handle memory in C language
__0.3.1 Pointer Review
__0.3.2 Structure Review
__0.3.3 Memory Layout Review
__0.3.4 How to handle data in the stack
__0.3.5 How to handle data in the heap
Part 01 Data Structures
Chapter 01 List
_1.1 List ADT
__1.1.1 List concept
__1.1.2 Comparing lists and arrays
_1.2 Linked List
__1.2.1 Node representation of linked list
__1.2.2 Key operations of linked lists
___Vitamin Quiz 1-1
__1.2.3 Linked list example program
__1.2.4 Pros and Cons of Linked Lists
___Vitamin Quiz 1-2
_1.3 Doubly linked list
__1.3.1 Key operations of doubly linked lists
__1.3.2 Double-linked list example program
___Vitamin Quiz 1-3
_1.4 Circular Linked List
__1.4.1 Key operations on circular doubly linked lists
__1.4.2 Circular doubly linked list example program
_Practice problems
Chapter 02 Stack
_2.1 Stack ADT
__2.1.1 Stack concept
___Vitamin Quiz 2-1
__2.1.2 Core functions of the stack: insertion and removal operations
_2.2 Stack implemented as an array
__2.2.1 Array-based stacks and node representations of stacks
__2.2.2 Basic operations on array-based stacks
__2.2.3 Array-based stack example program
___Vitamin Quiz 2-2
_2.3 Stack implemented with linked list
__2.3.1 Linked list-based stack and node representation of the stack
__2.3.2 Basic operations of linked list-based stacks
__2.3.3 Linked list-based stack example program
_2.4 Application of Stack: Arithmetic Calculator
__2.4.1 Infix and postfix notation of formulas
__2.4.2 Algorithm for computing postfix notation
__2.4.3 Algorithm for converting infix notation to postfix notation
__2.4.4 Arithmetic Calculator Example Program
_Practice problems
Chapter 03 Queue
_3.1 Queue ADT
__3.1.1 Queue Concept
__3.1.2 Core features of the Queue ADT: Insertion and removal operations
_3.2 Circular Queue
__3.2.1 Blank state and saturation state
__3.2.2 Basic operations of circular queues
__3.2.3 Circular Queue Example Program
_3.3 Linked Queue
__3.3.1 Basic operations of linked queues
__3.3.2 Linked Queue Example Program
_Practice problems
Chapter 04 Tree
_4.1 Tree ADT
__4.1.1 Tree Concept
__4.1.2 Components of a tree
__4.1.3 Tree Representation Method
__4.1.4 Node Representation Method
__4.1.5 Basic operations on trees
__4.1.6 Tree Example Program
___Vitamin Quiz 4-1
_4.2 Binary Tree
__4.2.1 Types of binary trees
__4.2.2 Traversing a binary tree
__4.2.3 Basic operations of binary trees
__4.2.4 Binary Tree Example Program
_4.3 Formula Tree
__4.3.1 How to build a formula tree
__4.3.2 Implementation of the formula tree
__4.3.3 Formula Tree Example Program
_4.4 Separate sets
__4.4.1 Disjoint set representation
__4.4.2 Basic operations on disjoint sets
__4.4.3 Separate set example program
_Practice problems
Part 02 Algorithm
Chapter 05 Sorting
_5.1 Overview of Sorting Algorithms
_5.2 Bubble sort
__5.2.1 Performance Measurement of Bubble Sort
__5.2.2.
Bubble sort example program
___Vitamin Quiz 5-1
_5.3 Insertion sort
__5.3.1 Measuring the performance of insertion sort
__5.3.2 Insertion sort example program
_5.4 Quick sort
__5.4.1 Two issues to address before using quick sort
__5.4.2 Quick sort example program
__5.4.3 Measuring the performance of quick sort
_5.5 Quick sort function in the C language standard library: qsort( )
__5.5.1 qsort( ) function example program
___Vitamin Quiz 5-2
__5.5.2 qsort( ) application problems
_Practice problems
Chapter 06 Exploration
_6.1 Overview of the Search Algorithm
_6.2 Sequential Search
__6.2.1 Forward Movement Method
___Vitamin Quiz 6-1
__6.2.2 Transposition method
___Vitamin Quiz 6-2
__6.2.3 Counting method
___Vitamin Quiz 6-3
_6.3 Binary Search
__6.3.1 Measuring the performance of binary search
__6.3.2 Implementation of binary search
__6.3.3 Binary Search Example Program: Second Final Exam Problem
__6.3.4 Binary search function in the C language standard library: bsearch( )
__6.3.5 bsearch( ) function example program
_6.4 Binary Search Tree
__6.4.1 Binary Search Tree Representation
__6.4.2 Basic operations of binary search trees
__6.4.3 Binary Search Tree Example Program
__6.4.4 Problems with binary search trees
_6.5 Red Black Tree
__6.5.1 Implementation Rules for Red-Black Trees
__6.5.2 Basic operations of red-black trees
__6.5.3 Red-Black Tree Example Program
_Practice problems
Chapter 07 Priority Queues and Heaps
_7.1 Priority Queue
__7.1.1 Insertion/removal operations in priority queues
__7.1.2 Implementation of a priority queue
_7.2 Heap
__7.2.1 Heap insertion operation
__7.2.2 Heap minimum value deletion operation
__7.2.3 Heap Implementation
__7.2.4 Heap Example Program
_7.3 Implementation of a heap-based priority queue
_Practice problems
Chapter 08 Hash Table
_8.1 Hash Table Overview
__8.1.1 Hash
__8.1.2 Hash Table
_8.2 Hash Function
__8.2.1 Division method
__8.2.2 Folding digits
__8.2.3 Limitations of Hash Functions: Collisions
_8.3 Conflict Resolution Techniques
__8.3.1 Chaining
__8.3.2 Open Addressing
_Practice problems
Chapter 09 Graph
_9.1 Overview of the Graph
__9.1.1 Background of the Birth of Graphs: Euler's Problem-Solving Tool
__9.1.2 Definition of graph
___Vitamin Quiz 9-1
_9.2 Graph Representation Methods
__9.2.1 Adjacency matrix
__9.2.2 Adjacency List
___Vitamin Quiz 9-2
_9.3 Graph Traversal Techniques
__9.3.1 Depth-first search
__9.3.2 Breadth-first search
__9.3.3 Graph Traversal Example Program
_9.4 Topological sorting
__9.4.1 How Topological Sorting Works
__9.4.2 Topological sorting example program
_9.5 Minimum spanning tree
__9.5.1 Prim's Algorithm
__9.5.2 Kruskal's algorithm
__9.5.3 Minimum spanning tree example program
_9.6 Finding the Shortest Path: Dijkstra's Algorithm
__9.6.1 Concept of Dijkstra's algorithm
__9.6.2 Dijkstra's Algorithm Example Program
_Practice problems
Chapter 10 String Search
_10.1 Overview of String Search Algorithms
_10.2 Old-fashioned search algorithm
__10.2.1 How the old-fashioned search works
__10.2.2 Example program for a simple search algorithm
_10.3 Karp-Rabin Algorithm
__10.3.1 How the Karp-Rabin Algorithm Works
__10.3.2 Karp-Rabin Algorithm Example Program
_10.4 KMP Algorithm
__10.4.1 How the KMP Algorithm Works
__10.4.2 Boundary Information Pre-Computation Method
__10.4.3 KMP Algorithm Example Program
_10.5 Boyer-Moore Algorithm
__10.5.1 Bad character movement
__10.5.2 Good Suffix Move
__10.5.3 Preprocessing of the Boyer-Moore Algorithm
__10.5.4 Boyer-Moore Algorithm Example Program
_Practice problems
Part 03 Algorithm Design Techniques
Chapter 11 Algorithm Performance Analysis
_11.1 Algorithm performance measurement criteria and execution time
__11.1.1 Algorithm Performance Measurement Criteria
__11.1.2 Algorithm Execution Time Analysis
_11.2 Asymptotic notation
__11.2.1 O notation
__11.2.2 Ω notation
__11.2.3 Θ notation
_11.3 Recursive Algorithm Performance Analysis
__11.3.1 Recursive Equations and Recursive Algorithms
__11.3.2 Performance Analysis of Quick Sort
__11.3.3 Master Cleanup
_Practice problems
Chapter 12 Divide and Conquer
_12.1 Overview of the Divide and Conquer Technique
__12.1.1 Background to the Birth of the Divide and Conquer Tactic: The Battle of Austerlitz
__12.1.2 Concept of divide-and-conquer algorithm
_12.2 Merge Sort
__12.2.1 How merge sort works
__12.2.2 Implementation of the merge sort algorithm
_12.3 Calculating exponents
__12.3.1 Exponentiation Calculation Method
__12.3.2 Implementation of the exponentiation algorithm
_12.4 Finding Fibonacci Numbers Based on Divide and Conquer
__12.4.1 How to find Fibonacci numbers
__12.4.2 How to find Fibonacci numbers using divide and conquer
__12.4.3 Implementation of the divide-and-conquer-based Fibonacci number finding algorithm
Practice problems
Chapter 13 Dynamic Programming
_13.1 Overview of Dynamic Programming
__13.1.1 Background of the Birth of Dynamic Programming
__13.1.2 Concept of dynamic programming
_13.2 Finding Fibonacci Numbers Based on Dynamic Programming
__13.2.1 How to find Fibonacci numbers using dynamic programming
__13.2.2 Implementation of an algorithm for finding Fibonacci numbers based on dynamic programming
_13.3 Longest common subsequence
__13.3.1 LCS Algorithm
__13.3.2 Implementation of the LCS Algorithm Based on Dynamic Programming
_Practice problems
Chapter 14 Greedy Algorithm
_14.1 Overview of the Greedy Algorithm
_14.2 Problem of reducing change
__14.2.1 Example program for calculating change
__14.2.2 Important properties of the greedy algorithm
_14.3 Revisiting Kruskal's Algorithm
_14.4 Revisiting Dijkstra's Algorithm
_14.5 Huffman coding
__14.5.1 Fixed-length codes and prefix codes
__14.5.2 Building a Huffman Tree
__14.5.3 Data Compression
__14.5.4 Decompressing data
__14.5.5 Huffman coding example program
_Practice problems
Chapter 15 Backtracking
_15.1 Overview of Backtracking
__15.1.1 A Case of Backtracking: The Story of Theseus
__15.1.2 The concept of backtracking
_15.2 Finding the Maze Escape Route
__15.2.1 Recursive call-based backtracking
__15.2.2 Implementation of the maze escape algorithm
__15.2.3 Maze escape algorithm example program
_15.3 Eight Queens Problem
__15.3.1 The sea space created by 8 queens and backtracking
__15.3.2 Implementation of an algorithm to solve the N-queen problem
__15.3.3 Example program to solve the N-queen problem
_Practice problems
__Find
Detailed image

Publisher's Review
[ Main Quest: Becoming a Better Developer ]
Data Structures + Algorithms: The Ultimate Level Up Route to Becoming a Better Developer!
Learning data structures and algorithms will greatly help you become a good developer.
In fact, these days, the standard library provides several algorithms by default, so using only the standard library is sufficient to create a program.
But no matter how good a tool is, it is useless if it is not suited to the situation.
The standard library is like a toolbox for developers.
A good developer should know how to use the right tool for the right situation.
So, how can we choose the right data structure and algorithm for the right situation? We need to have a clear understanding of how data structures and algorithms work and how they work.
Knowing how things work allows you to spend less time experimenting and asking "why not?" and more time creating better programs.
Even when problems arise, the algorithm can be improved to suit the situation.
However, the more you learn about data structures and algorithms, the more complex the formulas become, and the longer the code becomes.
For developers, data structures and algorithms are like raid quests.
You challenge and challenge again to have higher combat power, but clearing the level is never easy.
Likewise, to become a better developer, you need to learn data structures and algorithms, but learning them all the way through is never easy.
Perhaps data structures and algorithms are the 'final boss' for developers.
If you haven't been able to fully learn data structures and algorithms, it's probably because you haven't encountered "This is Data Structures + Algorithms" yet.
Fun is a great motivator to keep learning.
Just as having good companions allows you to enjoy games (camping, hiking, exercising, reading clubs, etc.), having good reference books by your side allows you to enjoy learning data structures and algorithms until the very end.
So, is "This is Data Structures + Algorithms" a good enough book to be considered a companion? Now, I'll introduce the features and content of "This is Data Structures + Algorithms."
● Features of 『This is Data Structure + Algorithm』
》 A witty story about data structure and algorithm concepts!
》Complicated formulas are minimized and only the formulas necessary for understanding are included!
》 Contains various illustrations to help you easily understand the operating principles!
》 Contains a variety of fun practice problems, like quests, that allow you to immediately check what you have learned!
》 Provides 108 example sources that allow you to immediately test the algorithms you have learned!
》 We run an author Q&A cafe for data structures and algorithms!
● Content covered in 『This is Data Structure + Algorithm』
》 Four data structures that are the basis of algorithms and are very useful in their own right
→ List, stack, queue, tree
》 6 Algorithms to Help Improve Your Programming Skills
→ Sorting, searching, priority queues and heaps, hash tables, graphs
》 Algorithm performance analysis and four design techniques that help create better programs
→ Algorithm performance analysis, divide and conquer, dynamic programming, greedy algorithm, backtracking
● You should read 『This is Data Structure + Algorithm』
》 The C language is perfect! But I heard you need algorithms to get a job?
→ Job seekers who want to properly understand the basic concepts of data structures and algorithms for employment, etc.!
》Your computer engineering major grades are perfect! But what if you want to become a better developer?
→ A student majoring in computer engineering who wants to learn data structures and algorithms properly!
》 My practical skills are almost perfect! But what if I want to check the confusing details as they arise?
→ Developers who need a reference book on data structures and algorithms that they can refer to over and over again while developing!
● Download example files
→ https://www.hanbit.co.kr/src/11003
Related books
Self-Study C Language (Hanbit Media, 2019)
"This is the Coding Test for Employment" (Hanbit Media, 2020)
Data Structures + Algorithms: The Ultimate Level Up Route to Becoming a Better Developer!
Learning data structures and algorithms will greatly help you become a good developer.
In fact, these days, the standard library provides several algorithms by default, so using only the standard library is sufficient to create a program.
But no matter how good a tool is, it is useless if it is not suited to the situation.
The standard library is like a toolbox for developers.
A good developer should know how to use the right tool for the right situation.
So, how can we choose the right data structure and algorithm for the right situation? We need to have a clear understanding of how data structures and algorithms work and how they work.
Knowing how things work allows you to spend less time experimenting and asking "why not?" and more time creating better programs.
Even when problems arise, the algorithm can be improved to suit the situation.
However, the more you learn about data structures and algorithms, the more complex the formulas become, and the longer the code becomes.
For developers, data structures and algorithms are like raid quests.
You challenge and challenge again to have higher combat power, but clearing the level is never easy.
Likewise, to become a better developer, you need to learn data structures and algorithms, but learning them all the way through is never easy.
Perhaps data structures and algorithms are the 'final boss' for developers.
If you haven't been able to fully learn data structures and algorithms, it's probably because you haven't encountered "This is Data Structures + Algorithms" yet.
Fun is a great motivator to keep learning.
Just as having good companions allows you to enjoy games (camping, hiking, exercising, reading clubs, etc.), having good reference books by your side allows you to enjoy learning data structures and algorithms until the very end.
So, is "This is Data Structures + Algorithms" a good enough book to be considered a companion? Now, I'll introduce the features and content of "This is Data Structures + Algorithms."
● Features of 『This is Data Structure + Algorithm』
》 A witty story about data structure and algorithm concepts!
》Complicated formulas are minimized and only the formulas necessary for understanding are included!
》 Contains various illustrations to help you easily understand the operating principles!
》 Contains a variety of fun practice problems, like quests, that allow you to immediately check what you have learned!
》 Provides 108 example sources that allow you to immediately test the algorithms you have learned!
》 We run an author Q&A cafe for data structures and algorithms!
● Content covered in 『This is Data Structure + Algorithm』
》 Four data structures that are the basis of algorithms and are very useful in their own right
→ List, stack, queue, tree
》 6 Algorithms to Help Improve Your Programming Skills
→ Sorting, searching, priority queues and heaps, hash tables, graphs
》 Algorithm performance analysis and four design techniques that help create better programs
→ Algorithm performance analysis, divide and conquer, dynamic programming, greedy algorithm, backtracking
● You should read 『This is Data Structure + Algorithm』
》 The C language is perfect! But I heard you need algorithms to get a job?
→ Job seekers who want to properly understand the basic concepts of data structures and algorithms for employment, etc.!
》Your computer engineering major grades are perfect! But what if you want to become a better developer?
→ A student majoring in computer engineering who wants to learn data structures and algorithms properly!
》 My practical skills are almost perfect! But what if I want to check the confusing details as they arise?
→ Developers who need a reference book on data structures and algorithms that they can refer to over and over again while developing!
● Download example files
→ https://www.hanbit.co.kr/src/11003
Related books
Self-Study C Language (Hanbit Media, 2019)
"This is the Coding Test for Employment" (Hanbit Media, 2020)
GOODS SPECIFICS
- Date of issue: August 3, 2022
- Page count, weight, size: 664 pages | 1,196g | 183*235*30mm
- ISBN13: 9791169210034
- ISBN10: 1169210031
You may also like
카테고리
korean
korean