Data Structures and Algorithms Lecturer : MSc. Tran Dac Tot HCMC University of Food Industry Email : [email protected] facebook: https://www.facebook.com/totkhtn Reference : Dr. Halena Wong – www.cs.cityu.edu.hk
Data Structuresand
Algorithms
Lecturer : MSc. Tran Dac Tot
HCMC University of Food Industry
Email : [email protected]
facebook: https://www.facebook.com/totkhtn
Reference : Dr. Halena Wong – www.cs.cityu.edu.hk
Reference Books
Thomas H. Cormen, Charles E. Leiserson, Ronald L.
RivestandClifford Stein, Introduction to Algorithms, The MIT
Press © 2001.
Adam Drozdek, Data Structures and Algorithms in C++
Second Edition, Brooks/Cole 2001.
P. S. Deshpande, O. G. Kakde. C & Data Structures, 2004.
A.V. Aho, J.E Hopcroft, J.D Ullman. Data structures and
Algorithms, Addison Wesley, 1983.
MARK ALLEN WEISS, Data Structures and Algorithm
Analysis, In C. The Benjamin/Cummings Publishing
Company, 1993.
Reference Books
Data Structures and Algorithms with Object-Oriented Design
Patterns in C#, Bruno R. Preiss, 2004.
Tiêng Viêt
[1] Trần Văn Thọ, Cấu trúc dữ liêu và giải thuật, Trường ĐH CNTP
Tp.HCM, 2012.
[2] Trần Văn Thọ, Thực hành cấu trúc dữ liêu và giải thuật,
Trường ĐH CNTP Tp.HCM, 2012.
Nội Dung Chương Trình
Buổi 1: Giới thiêu về CTDL & Giải Thuật.
Các thuật toán tìm kiêm.
Buổi 2: Interchange Sort, Selection Sort, Bubble Sort,
Insertion Sort.
Buổi 3: Shaker Sort, Shell Sort, Heap Sort.
Buổi 4: Quick Sort, MergeSort, Radix Sort.
Buổi 5: Cấu trúc động, Danh sách liên kêt đơn.
Nội Dung Chương Trình
Buổi 6: Stack, Queue.
Buổi 7: Danh sách liên kêt kép.
Buổi 8: Cây, Cây nhị phân, cây nhị phân tìm kiêm.
Buổi 9: Cây cân bằng (AVL).
Buổi 10: Các CTDL mở rộng.
Buổi 11: Ôn tập.
Programming Language and Tools
• We will write programs in C language
• Assignment/exercises can be use with Visual C++
Week 1,2 (at home)
• Review C programming
• If you have missed
something, find your tutor
immediately!
If you consider other C programming tools:
eg. Visual Studio.Net, Pelles C (http://www.smorgasbordet.com/pellesc/)
- The compiler acts in the same way as Visual C++? Mostly not.
Comments (Enough but not excess!)
• Describe the program at the beginning
• Describe important variables and
global declarations
• Describe each function before the
function
• Explain any complex logic
Indentation (use tabs) / format:
if (x>y)
county++;
else
if (x>z)
{countz++;
countx++;}
Hard coding should be avoided:
if (x >36)
{ x=0;
y++;
}
GOOD
const int WIDTH=36;..if (x >WIDTH){ x=0;
y++;}
if (x>y)
county++;
else
if (x>z)
{countz++;
countx++;}
GOOD
Global variables:
only if necessary and appropriate
int i, j;
void count(){ for (i=0;…
…}
void main(){ for (i=0;…
…}
const int SIZE=10;
int table[SIZE][SIZE];
void PrintTable()
{..
}
void main()
{..
}
OK
Program bugs are normal -- You should fix them!
Trust yourself:
Your program is based on a
workable logic, right?
Now, the error is probably due
to careless mistakes only .
With 99.9% sure these
mistakes can be caught by
using the debugger.
Design of logic ..
Coding ..
Testing ..
!! ERROR
But after I have corrected the bug,
the program still goes wrong.
Should I undo the correction?
No. Don’t undo the correction.
Now there is probably another
small bug that you need to fix.
Don’t give up. You are
approaching to success.
Any problem in fixing a program bug?• First of all: solve for all compilation warnings(these are usually hints of bugs)
• A general debugging cycle:
1. Test it again with simple test cases (increase complexity gradually)
2. Select a simplest test case that your program runs incorrectly.
3. With the test case, trace the code with pencil and paper.
(write down all intermediate results obtained step-by-step)
4. Run your program with debugger to trace the program
(adding breakpoints / tracing line by line)
Locate the statement that causes any difference compared with
your pencil-and-paper tracing.
5. Fix the bug.
6. Test the program with another test case.
Trust yourself on the logic: “the bug should be a careless mistake and can be
fixed” – otherwise you will never start debugging.
get Help (MSDN): a convenient reference for C.