1: Introduction To Programming, Algorithms, And Flowcharts; 1.1 Programs and Programming; 1.1.1 System Software; 1.1.2 Application Software; 1.2 Programming Languages; 1.2.
1 System Programming Languages; 1.2.2 Application Programming Languages; 1.2.3 Low-level Languages; 1.2.4 High-level Languages; 1.3 Compiler, Interpreter, Loader, and Linker; 1.
3.1 Compiling and Executing High-level Language Programs; 1.3.2 Linker; 1.3.3 Loader; 1.3.4 LinkingLoader and Linkage Editor; 1.
4 Program Execution; 1.5 Fourth Generation Languages; 1.6 Fifth Generation Languages; 1.7 Classification of Programming Languages; 1.7.1 Procedural Languages; 1.7.2 Problem-orientedLanguages; 1.
7.3 Non-procedural Languages; 1.8 Structured Programming Concept; 1.8.1 Top-Down Analysis; 1.8.2 Modular Programming; 1.8.
3 Structured Code; 1.8.4 The Process of Programming; 1.9 Algorithms; 1.9.1 What is an Algorithm?; 1.9.2 Different Ways of Stating Algorithms; 1.
9.3 The Key Features of an Algorithm and the Step Form; 1.9.4 What are Variables?; 1.9.5 Subroutines; 1.9.6 A Strategy for Designing Algorithms; 1.
9.7 Tracing an algorithm to Depict Logic; 1.9.8 Specification forconverting algorithms into programs; 2: Basics of C; 2.1. Introduction; 2.1.1.
Why Learn C?; 2.1.2 The Future of C; 2.2. Standardizations of C Language; 2.3. Developing Programs In C; 2.4.
A Simple C Program;2.5. Parts Of C Program Revisited; 2.6. Structure Of A C Program; 2.7. Concept Of A Variable; 2.8.
Datatypes In C; 2.9. Program Statement; 2.10. Declaration; 2.11. How does the computer store things in memory?; 2.11.
1. How Integers Are Stored?; 2.11.2. How Floats And Doubles Are Stored?; 2.12. Token; 2.12.
1. Identifier; 2.12.2. Keywords; 2.12.3. Constant; 2.
12.3. Assignment; 2.12.4. Initialization; 2.12.5.
Operators and Expressions; 2.12.6. Expression Evaluation - Precedence and Associativity;2.13. Expressions Revisited; 2.14. Lvalues And Rvalues; 2.
15. Type Conversion In C; 2.16 Working With Complex Numbers; 3: Input and Output; 3.1 Introduction; 3.2 Basic Screen and keyboard I/O in C;3.3 Non-formatted Input and Output; 3.3.1 Single Character Input and Output; 3.
3.2 Single Character Input; 3.3.3 Single Character Output; 3.3.4 Additional Single Character Input and Output Functions; 3.3.5 Worked-out Programs with getchar ( ) and putchar ( ); 3.
4 Formatted Input and Output Functions; 3.4.1 Output Function printf ( ); 3.4.2 Input Function scanf ( ); 3.5 Worked-out Examples using scanf ( ) and printf ( ); 4: Control Statements; 4.1 Introduction; 4.2 SpecifyingTest Condition for Selection and Iteration; 4.
3 Writing Test Expression; 4.3.1 Understanding How True and False is Represented in C; 4.4 Conditional Execution and Selection; 4.4.1 Selection Statements; 4.4.2 TheConditional Operator; 4.
4.3 The switch Statement; 4.5 Iteration and Repetitive Execution; 4.5.1 while Construct; 4.5.2 for Construct; 4.5.
3 do-while Construct; 4.6 Which Loop Should be Used?; 4.6.1 Using Sentinel Values; 4.6.2 Using Prime Read; 4.6.3 Using Counter; 4.
7 goto Statement; 4.8 Special Control Statements; 4.9 Nested Loops; 5: Arrays and Strings; 5.1 Introduction; 5.2 One-dimensional Array; 5.2.1 Declaration of a One-dimensional Array; 5.2.
2 Initializing IntegerArrays; 5.2.3 Accessing Array Elements; 5.2.4 Other Allowed Operations; 5.2.5 Internal Representation of Arrays in C; 5.2.
6 Variable Length Arrays and the C99 changes; 5.2.7 Working with a One-dimensional Array; 5.3Strings: One-dimensional Character Arrays; 5.3.1 Declaration of a String; 5.3.2 String Initialization; 5.
3.3 Printing Strings; 5.3.4 String Input; 5.3.5 Character Manipulation in the String; 5.3.6 String Manipulation; 5.
4 Multidimensional Arrays; 5.4.1 Declaration of a Two-dimensional Array; 5.4.2 Declaration of a Three-dimensional Array; 5.4.3 Initialization of Multidimensional Arrays; 5.4.
4 Unsized Array Initializations; 5.4.5 Accessing Multidimensional Arrays; 5.5 Arrays of Strings:Two-dimensional Character Array; 5.5.1 Initialization; 5.5.2 Manipulating String Arrays; 6: Functions; 6.
1 Introduction; 6.2 Concept of Function; 6.2.1 Why are functions needed?; 6.3 Using Functions; 6.3.1Function prototype declaration; 6.3.
2 Function definition; 6.3.3 Function calling; 6.4 Call by Value Mechanism; 6.5 Working with Functions; 6.6 Passing Arrays to Functions; 6.7 Scope and Extent; 6.7.
1 Concept of Global and Local Variables; 6.7.2 Scope Rules; 6.8 Storage Classes; 6.8.1 Storage class specifiers for variables; 6.8.2 Storage class specifiers for functions; 6.
8.3 Linkage; 6.9 The Inline Function; 6.10 Recursion; 6.10.1 What is needed for implementing recursion?; 6.10.2 How isRecursion implemented?; 6.
10.3 Comparing Recursion and Iteration; 6.11 Searching and Sorting; 6.11.1 Searching Algorithms; 6.11.2. Sorting Algorithms; 6.
12. Analysis of Algorithms; 6.12.1 AsymptoticNotation; 6.12.2 Efficiency of Linear Search; 6.12.3 Binary Search Analysis; 6.
12.4 Analysis of Bubble Sort; 6.12.5 Analysis of Quick Sort; 6.12.6 Disadvantages of Complexity Analysis; 7: Pointers in C; 7.1 Introduction; 7.2 Understanding Memory Addresses; 7.
3 Address Operator (&); 7.4 Pointers; 7.4.1 Declaring a Pointer; 7.4.2 Initializing Pointers; 7.4.3 Indirection Operator and Dereferencing; 7.
5 void Pointer; 7.6 Null Pointer; 7.7 Use of Pointers; 7.8 Arrays andPointers; 7.8.1 One-dimensional Arrays and Pointers; 7.8.2 Passing an Array to a Function; 7.
8.3 Differences between Array Name and Pointer; 7.9 Pointer and String; 7.10 Pointer Arithmetic; 7.10.1 Assignment; 7.10.2 Addition orSubtraction on Integer; 7.
10.3 Subtraction of Pointers; 7.10.4 Comparing Pointers; 7.11 Pointers to Pointers; 7.12 Array of Pointers; 7.13 Pointers to an Array; 7.14 Two-dimensional Arrays and Pointers; 7.
14.1 Passing Two-dimensional Array to a Function; 7.15 Three-dimensional Arrays; 7.16 Pointers to Functions; 7.16.1 Declaration of a Pointer to a Function; 7.16.2 Initialization of Function Pointers; 7.
16.3 Calling a Function using a Function Pointer; 7.16.4 Passing a Function to AnotherFunction; 7.16.5 How to Return a Function Pointer; 7.16.6 Arrays of Function Pointers; 7.
17 Dynamic Memory Allocation; 7.17.1 Dynamic Allocation of Arrays; 7.17.2 Freeing Memory; 7.17.3 Reallocating MemoryBlocks; 7.17.
4 Implementing Multidimensional Arrays using Pointers; 7.18 Offsetting a Pointer; 7.19 Memory Leak and Memory Corruption; 7.20 Pointer and Const Qualifier; 7.20.1 Pointer to Constant; 7.20.2 Constant Pointers; 7.
20.3 Constant Parameters; 8: User-defined Data Types and Variables: Structures, Unions, Enumerations, and Bitfields; 8.1 Introduction; 8.2 Structures; 8.2.1 Declaring Structures and Structure Variables; 8.2.2 Accessing the Members of a Structure; 8.
2.3Initialization of Structures; 8.2.4 Copying and Comparing Structures; 8.2.5 typedef and its Use in Structure Declarations; 8.2.6 Nesting of Structures; 8.
2.7 Arrays of Structures; 8.2.8 Initializing Arrays of Structures;8.2.9 Arrays within the Structure; 8.2.10 Structures and Pointers; 8.
2.11 Structures and Functions; 8.3 Union; 8.3.1 Declaring a Union and its Members; 8.3.2 Accessing and Initializing Members of a Union; 8.3.
3 Structure Versus Union; 8.4 Enumeration Types; 8.5 Bitfields; 9: Files in C; 9.1 Introduction; 9.2 Using Files in C; 9.2.1 Declaration of a File Pointer; 9.2.
2 Opening a File; 9.2.3 Closing and Flushing Files; 9.3 Working with Text Files; 9.3.1 Character Input andOutput; 9.3.2 End of File (EOF); 9.
3.3 Detecting the End of a File using feof() Function; 9.4 Working with Binary Files; 9.5 Direct File Input and Output; 9.5.1 Sequential Versus Random File Access; 9.6 Files of Records;9.6.
1 Working with Files of Records; 9.7 Random Access to Files of Records; 9.8 Other File Management Functions; 9.8.1 Deleting a File; 9.8.2 Renaming a File; 9.9 Low-Level I/O; 10: Linked Lists; 10.
1 Introduction; 10.2 Singly Linked Lists; 10.2.1 Insertion of a Node in a Singly Linked List; 10.2.2 Deletion of a Node from a Singly Linked List; 10.2.3 Sorting a Singly Linked List; 10.
2.4 Destroying a Singly Linked List; 10.2.5 More Complex Operations on Singly Linked Lists; 10.3Circular Linked Lists; 10.3.1 Appending a Node; 10.3.
2 Displaying a Circular Linked List; 10.3.3 Inserting a Node after a Specified Node; 10.3.4 Inserting a Node before a Particular Node; 10.3.5 Deleting a Node;10.3.
6 Sorting a Circular Linked List; 10.4 Doubly Linked Lists; 10.4.1 Operations on Doubly Linked Lists; 10.4.2 Advantages/Disadvantages of Doubly Linked Lists; 10.5 Introduction to Circular Doubly Linked Lists; 10.6 Applications of Linked Lists; 10.
6.1 Dynamic Storage Management; 10.6.2 Garbage Collection and Compaction; 10.7 Disadvantages of Linked Lists; 10.8 Array versus Linked List Revisited; 11: Advanced C; 11.1 Introduction; 11.2 Bitwise Operator; 11.
2.1 Bitwise AND; 11.2.2Bitwise OR; 11.2.3 Bitwise Exclusive-OR; 11.2.4 Bitwise NOT; 11.
2.5 Bitwise Shift Operator; 11.3 Command-line Arguments; 11.4 The C Preprocessor; 11.4.1 The C Preprocessor Directives; 11.4.2 PredefinedIdentifiers; 11.
5 Type Qualifier; 11.5.1 const Qualifier; 11.5.2 volatile Qualifier; 11.5.3 restrict Qualifier; 11.6 Variable Length Argument List; 11.
7 Memory Models and Pointers; 12: Stacks, Queues, and Trees; 12.1. Introduction; 12.2. Stack; 12.2.1 Implementation Of Stack; 12.2.
2 Application Of Stack; 12.3. Queue; 12.3.1 Implementation of a queue; 12.3.2 Other variations of queue; 12.3.
3 Applications of queue; 12.4. Tree; 12.4.1 Some basic tree terminology; 12.4.2 Binary tree; 12.4.
3Traversals of a binary tree; 12.4.4 Kinds of binary trees; 12.4.5 Binary search tree; 12.4.6 Application of tree; Appendices; Index.