- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Beginning with the basic concept of programming, the book gives an exhaustive coverage of arrays, strings, functions, pointers, and data structures. Separate chapters on linked lists and stacks, queues, and trees, with their implementation in C, have been provided to simplify the learning of complex concepts. Some advanced features of C such as memory models, command-line arguments, and bitwise operators have also been included. Case studies demonstrating the use of C in solving mathematical as well as real-life problems have also been presented. This edition also highlights C99 features…mehr
Andere Kunden interessierten sich auch für
- Reema TharejaIntroduction to C Programming47,99 €
- Rama ReddyC Programming for Scientists and Engineers with Applications218,99 €
- Chandrakant NaikodiProgramming in C17,99 €
- Harry FairheadProgramming The Raspberry Pi Pico In C43,99 €
- Sukhendra SinghC programming for problem solving.18,99 €
- Mukkala Ananda Ranjith KumarC The Basics: A Step-by-Step to Learn and Practice C-Programming15,99 €
- Harry FairheadMicro: bit IoT In C Second Edition39,99 €
-
-
-
Beginning with the basic concept of programming, the book gives an exhaustive coverage of arrays, strings, functions, pointers, and data structures. Separate chapters on linked lists and stacks, queues, and trees, with their implementation in C, have been provided to simplify the learning of complex concepts. Some advanced features of C such as memory models, command-line arguments, and bitwise operators have also been included. Case studies demonstrating the use of C in solving mathematical as well as real-life problems have also been presented. This edition also highlights C99 features wherever relevant in the text. The book is easy-to-understand and student-friendly with plenty of programs complete with source codes, sample outputs, and test cases. Readers will find this book an excellent companion for self-study owing to its numerous examples, review questions, and programming exercises.
Programming in C 2e is designed to serve as a textbook for students of engineering (BE/B Tech), computer applications (BCA/MCA), and computer science (B Sc) for an introductory course on programming in C. It provides a thorough understanding of the fundamentals of C and its applications. This will help readers to learn the art of writing programs in C.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Programming in C 2e is designed to serve as a textbook for students of engineering (BE/B Tech), computer applications (BCA/MCA), and computer science (B Sc) for an introductory course on programming in C. It provides a thorough understanding of the fundamentals of C and its applications. This will help readers to learn the art of writing programs in C.
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
Produktdetails
- Produktdetails
- Verlag: Hurst & Co.
- 2nd Revised edition
- Seitenzahl: 528
- Erscheinungstermin: 12. Januar 2012
- Englisch
- Abmessung: 277mm x 213mm x 25mm
- Gewicht: 1043g
- ISBN-13: 9780198065289
- ISBN-10: 0198065280
- Artikelnr.: 34552164
- Verlag: Hurst & Co.
- 2nd Revised edition
- Seitenzahl: 528
- Erscheinungstermin: 12. Januar 2012
- Englisch
- Abmessung: 277mm x 213mm x 25mm
- Gewicht: 1043g
- ISBN-13: 9780198065289
- ISBN-10: 0198065280
- Artikelnr.: 34552164
Pradip Dey, currently a faculty member at the RCC Institute of Information Technology, Kolkata, has over 15 years of teaching experience and about 24 years of industry experience. Manas Ghosh, also working at the RCC Institute of Information Technology, Kolkata, has over 13 years experience of teaching and development in information technology.
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 Linking Loader 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-oriented Languages
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 for converting algorithms into programs
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.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.1 Introduction
4.2 Specifying Test 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 The Conditional 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.1 Introduction
5.2 One-dimensional Array
5.2.1 Declaration of a One-dimensional Array
5.2.2 Initializing Integer Arrays
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.3 Strings: 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.1 Introduction
6.2 Concept of Function
6.2.1 Why are functions needed?
6.3 Using Functions
6.3.1 Function 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 is Recursion 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 Asymptotic Notation
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.1 Introduction
7.2 Understanding Memory Addresses
7.3 Address Operator (and)
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 and Pointers
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 or Subtraction 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 Another Function
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 Memory Blocks
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.1 Introduction
8.2 Structures
8.2.1 Declaring Structures and Structure Variables
8.2.2 Accessing the Members of a Structure
8.2.3 Initialization 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.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 and Output
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.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.3 Circular 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.1 Introduction
11.2 Bitwise Operator
11.2.1 Bitwise AND
11.2.2 Bitwise 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 Predefined Identifiers
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.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.3 Traversals 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
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 Linking Loader 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-oriented Languages
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 for converting algorithms into programs
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.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.1 Introduction
4.2 Specifying Test 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 The Conditional 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.1 Introduction
5.2 One-dimensional Array
5.2.1 Declaration of a One-dimensional Array
5.2.2 Initializing Integer Arrays
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.3 Strings: 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.1 Introduction
6.2 Concept of Function
6.2.1 Why are functions needed?
6.3 Using Functions
6.3.1 Function 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 is Recursion 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 Asymptotic Notation
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.1 Introduction
7.2 Understanding Memory Addresses
7.3 Address Operator (and)
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 and Pointers
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 or Subtraction 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 Another Function
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 Memory Blocks
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.1 Introduction
8.2 Structures
8.2.1 Declaring Structures and Structure Variables
8.2.2 Accessing the Members of a Structure
8.2.3 Initialization 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.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 and Output
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.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.3 Circular 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.1 Introduction
11.2 Bitwise Operator
11.2.1 Bitwise AND
11.2.2 Bitwise 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 Predefined Identifiers
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.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.3 Traversals 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
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 Linking Loader 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-oriented Languages
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 for converting algorithms into programs
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.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.1 Introduction
4.2 Specifying Test 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 The Conditional 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.1 Introduction
5.2 One-dimensional Array
5.2.1 Declaration of a One-dimensional Array
5.2.2 Initializing Integer Arrays
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.3 Strings: 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.1 Introduction
6.2 Concept of Function
6.2.1 Why are functions needed?
6.3 Using Functions
6.3.1 Function 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 is Recursion 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 Asymptotic Notation
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.1 Introduction
7.2 Understanding Memory Addresses
7.3 Address Operator (and)
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 and Pointers
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 or Subtraction 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 Another Function
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 Memory Blocks
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.1 Introduction
8.2 Structures
8.2.1 Declaring Structures and Structure Variables
8.2.2 Accessing the Members of a Structure
8.2.3 Initialization 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.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 and Output
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.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.3 Circular 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.1 Introduction
11.2 Bitwise Operator
11.2.1 Bitwise AND
11.2.2 Bitwise 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 Predefined Identifiers
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.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.3 Traversals 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
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 Linking Loader 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-oriented Languages
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 for converting algorithms into programs
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.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.1 Introduction
4.2 Specifying Test 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 The Conditional 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.1 Introduction
5.2 One-dimensional Array
5.2.1 Declaration of a One-dimensional Array
5.2.2 Initializing Integer Arrays
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.3 Strings: 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.1 Introduction
6.2 Concept of Function
6.2.1 Why are functions needed?
6.3 Using Functions
6.3.1 Function 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 is Recursion 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 Asymptotic Notation
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.1 Introduction
7.2 Understanding Memory Addresses
7.3 Address Operator (and)
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 and Pointers
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 or Subtraction 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 Another Function
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 Memory Blocks
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.1 Introduction
8.2 Structures
8.2.1 Declaring Structures and Structure Variables
8.2.2 Accessing the Members of a Structure
8.2.3 Initialization 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.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 and Output
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.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.3 Circular 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.1 Introduction
11.2 Bitwise Operator
11.2.1 Bitwise AND
11.2.2 Bitwise 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 Predefined Identifiers
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.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.3 Traversals 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