We may earn an affiliate commission when you visit our partners.
Portfolio Courses

In this course you will be taught through step-by-step live coding examples how to create and use a library of functions for working with Linked Lists in the C programming language.

Read more

In this course you will be taught through step-by-step live coding examples how to create and use a library of functions for working with Linked Lists in the C programming language.

Linked Lists are an important type of data structure in computer science and computer programming, so before we walkthrough how to create and use them, we'll also cover what Linked Lists are, how they work, and some practical applications of Linked Lists.  The bulk of the course is spent on learning how to work with Linked Lists using C, with over 3 hours of video covering a series of common functionalities explaining step-by-step how they are implemented.  We'll also teach you how to package your functions together into a re-usable library, and how to document your code.

By the end of the course you will have a C library of Linked List functions that will help you build a great programming portfolio.

Linked List functionalities that are covered include:

  • Creating a linked list

  • Inserting nodes on the head and tail of a linked list

  • Deleting nodes from the head and tail of a linked list

  • Sorting a linked list

  • Deleting matching nodes from a linked list

  • Deleting duplicate nodes from a linked list

  • Reversing a linked list

  • Duplicating a linked list

  • Determining if a value is in a linked list

  • ...and many others, over 20 functions in total.

Enroll now

What's inside

Learning objective

Student will learn how to create and use linked lists in c by developing a library of functions.

Syllabus

Introduction
Course Overview

An introduction to Linked Lists.  After this lecture you will be able to describe what linked lists are and why we might use them.

Read more
Create and use Linked Lists using C
Creating and Printing Linked Lists
Inserting Nodes into a Linked List
Deleting Nodes from a Linked List
Length, Search, Count and Replace Operations for Linked Lists
Deleting Matches from a Linked List
Efficiently Deleting Matches from a Linked List
Appending and Reversing Linked Lists
Sorting and Removing Duplicates from a Linked List
Delete and Insert After a Value in a Linked List
Practice Challenge Questions
Practice Challenge Question Solutions
Performance Test: Linked List vs Array
Create a re-usable C library of Linked List functions
Creating the Library
Documenting the Library
How to modify the project to add to their own portfolio of work
Building Your Portfolio with Linked Lists
Bonus Lesson: Hosting Your Portfolio FREE with GitHub Pages

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Provides hands-on experience in implementing fundamental data structures, which is essential for building a strong foundation in computer science
Teaches how to package functions into a reusable library, which is a valuable skill for software development and code organization
Covers a comprehensive set of linked list operations, including creating, inserting, deleting, sorting, and reversing, which are common tasks in software engineering
Includes a performance test comparing linked lists and arrays, which helps learners understand the trade-offs between different data structures
Demonstrates how to document code, which is crucial for collaboration and maintainability in professional software development environments
Uses C, which is a lower-level language that requires careful memory management, which may be challenging for beginners without prior experience

Save this course

Save Linked Lists with C to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Linked Lists with C with these activities:
Review Pointers in C
Solidify your understanding of pointers in C, as linked lists rely heavily on pointer manipulation. Refreshing this knowledge will make the course material easier to grasp.
Browse courses on Pointers
Show steps
  • Read introductory materials on pointers.
  • Practice pointer arithmetic.
  • Write small programs using pointers.
Review 'C Programming: A Modern Approach'
Deepen your understanding of C programming concepts, particularly those related to memory management and pointers, which are crucial for working with linked lists.
Show steps
  • Read the chapters on pointers and memory allocation.
  • Work through the examples and exercises.
Implement Basic Linked List Operations
Practice implementing basic linked list operations like insertion, deletion, and traversal to reinforce the concepts learned in the course.
Show steps
  • Implement insertion at the head and tail.
  • Implement deletion from the head and tail.
  • Implement a function to print the list.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Document Your Linked List Library
Create clear and concise documentation for your linked list library, explaining the purpose and usage of each function. This reinforces understanding and improves code maintainability.
Show steps
  • Write comments for each function.
  • Create a README file explaining the library.
  • Use a documentation generator like Doxygen.
Build a Simple Application Using Your Linked List Library
Apply your linked list library to build a practical application, such as a task manager or a playlist manager. This solidifies your understanding and demonstrates the real-world utility of linked lists.
Show steps
  • Choose an application to build.
  • Design the application's data structures.
  • Implement the application using your library.
Contribute to an Open Source Project Using Linked Lists
Contribute to an open-source project that utilizes linked lists, such as a data structure library or a system utility. This provides valuable experience working with real-world code and collaborating with other developers.
Show steps
  • Find an open-source project that uses linked lists.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.
Review 'Data Structures and Algorithm Analysis in C'
Explore advanced concepts related to linked lists and data structures, such as time complexity analysis and different linked list implementations.
Show steps
  • Read the chapters on linked lists and data structures.
  • Study the examples and algorithms.

Career center

Learners who complete Linked Lists with C will develop knowledge and skills that may be useful to these careers:
Software Engineer
A software engineer often works with data structures like linked lists in their daily tasks. This role involves designing, developing, and testing software systems, which frequently requires a deep understanding of how data is organized and manipulated. This course teaches how to create and use a library of linked list functions in C, providing a practical foundation for building efficient and reliable software. A software engineer implementing complex algorithms will benefit from this course's focus on linked list creation, insertion, deletion, sorting, reversing, and other core functions. Specifically, the course's coverage of documenting and packaging functions to a library perfectly matches the needs of a software engineer who must create organized and reusable code.
Embedded Systems Programmer
An embedded systems programmer develops software for devices such as microcontrollers and sensors. Working with limited resources, embedded systems programmers often rely on their knowledge of data structures like linked lists to optimize performance. This course provides a thorough grounding in creating and using a linked list library in C, helping an embedded systems programmer effectively manage memory and data. Particularly valuable are the lessons on inserting, deleting, and manipulating nodes which are common tasks for embedded devices. The skills taught in this course help build a strong foundation in the core concepts necessary for building robust embedded systems.
Algorithm Developer
An algorithm developer works on designing and implementing algorithms and data structures, frequently using languages like C. This course, focused on creating and using linked lists, is highly relevant. An algorithm developer must deeply understand data structures, such as linked lists, and their practical implications. The practical skills taught including insertion, deletion, sorting, reversing and searching within linked lists, as well as creating a reusable library, are essential for an algorithm developer who must implement and optimize algorithms. This course may be especially useful for those developing algorithms that involve dynamic data sets.
Game Programmer
A game programmer is responsible for building the engine and systems that drive video games. Game development requires the management of dynamic data and this course helps a game programmer learn how to use a linked list library in C. The practical work performed in this course which includes building, manipulating, and utilizing a variety of linked list functions, is highly relevant. A game programmer often needs to handle dynamic data, such as character inventories, game states, or other lists or queues. This course's focus on creating a reusable library may be useful for ensuring code efficiency and organization within a game development project.
Data Scientist
A data scientist analyzes and interprets complex data, and while tools and libraries may abstract away implementation details, a deep understanding of data structures helps a data scientist optimize their code for performance. Though not the primary focus, this course which provides knowledge of linked list implementations in C helps to build knowledge of foundations, such as the underlying implementation of data structures, which may later be useful. A data scientist who understands data structures is better equipped to handle large and complex data sets, and make informed choices about data processing. This course may be useful to gain a deeper understanding of fundamental data structures.
Robotics Engineer
A robotics engineer deals with the design, construction, and maintenance of robots. This course helps a robotics engineer because some robotics applications require the use of dynamic data structures. A robotics engineer should have a strong understanding of fundamental data structures, such as linked lists, and how they are implemented. Learning how to create and use a library of linked lists in C helps to build core competencies. The exercises in this course which focus on insertion, deletion, sorting and searching linked lists may be particularly useful when programming robot behaviors or managing sensor data. This course may be helpful for those wanting to work at robotics companies.
Computer Science Researcher
A computer science researcher investigates topics in computer science and this course may be useful for learning about core data structures. A computer science researcher needs a deep understanding of computer science fundamentals, which include data structures, such as linked lists. The practical implementation of a linked lists library in C provides a hands-on, in depth look at these kinds of data structures. This course may help a researcher build foundational understanding when researching topics involving data handling and algorithm design. Also, the course's lessons on packaging and documenting a library may be useful for a researcher in the process of contributing to a project.
Technical Writer
A technical writer creates documentation for technical products, including software. This course provides real-world examples of linked list implementation in C which can provide needed examples. A good technical writer needs a strong understanding of the technologies they write about, so this C focused course builds some of that knowledge. The lessons in this course on documenting a library is of particular relevance to a technical writer who must explain programming concepts and how code is used. This course may be helpful in providing a foundation of understanding necessary to create meaningful technical documentation.
Quality Assurance Engineer
A quality assurance engineer tests and validates software to ensure its quality. While a QA engineer may not directly implement data structures, understanding how they work is useful for identifying software bugs that arise from manipulating data. This course helps a quality assurance engineer because it teaches linked list implementation from the ground up. The course's focus on creating and working with various linked list functionalities, such as creation, insertion, deletion, and sorting provides a basis for understanding how software might fail. The knowledge of how a linked list is implemented, gained from this course, may be useful while testing software.
Database Administrator
A database administrator manages and maintains databases. Though not directly related to linked list implementation, this course helps a database administrator understand fundamental concepts of data management and efficient data handling. The practical implementation of a linked list library in C can build a deeper understanding of data structures which is relevant to understanding databases. This course may be useful to provide an understanding of how data is organized, stored, and managed. The knowledge gained from this course may provide a starting point for understanding storage and performance optimizations techniques.
Systems Analyst
A systems analyst analyzes and evaluates computer systems, for example, to identify areas for improvement. This course helps a systems analyst have a better understanding of common and core data structures which form the foundation of systems. The practical experience of building a linked lists library in C which this course provides, helps show the complexity of data management. This course may be helpful to gain a better understanding of how data is structured, organized and managed, which is critical for analyzing how systems work and how to best manage them.
Data Analyst
A data analyst collects, cleans, and analyzes data to provide insights. This course may be useful for building a deeper understanding of foundational concepts for efficient data handling and management. The course teaches the implementation of a linked list library in C, and while this is not a core skill of a data analyst, the lessons may be helpful for working with more complex data sets. Specifically, lessons on inserting, deleting, searching within linked lists may be relevant to understanding how data can be manipulated for analyses. A data analyst interested in understanding foundational computer science concepts may find this course useful.
IT Support Specialist
An IT support specialist helps users with computer system issues and helps maintain the systems. While creating and utilizing a linked listed library is not a core competency, this course may help an IT support specialist better understand the underlying concepts behind computer systems. This course gives an IT support specialist hands-on experience in handling programming concepts, which is useful when dealing with different types of software. This course may be useful for building a more well-rounded understanding of computer systems.
Project Manager
A project manager plans, organizes, and oversees the completion of a project. While not directly involved in programming, this course may help a project manager better understand the technical aspects of a project. This course teaches implementation of linked lists in C, which is a fundamental concept in computer science. The project manager may find the exercises on building and organizing libraries may be particularly insightful. This course may be useful for providing a more informed perspective on software development projects.
Technical Sales Representative
A technical sales representative sells technical products and services, and needs a solid foundation of technical understanding. While not directly related to technical sales, this course may provide a deeper understanding of programming. The lessons in the course on linked lists help a technical sales representative have a better grasp of data structures and programming concepts. This course may be useful for helping a technical sales representative who wishes to engage in substantive technical discussions with a client.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Linked Lists with C.
Provides a comprehensive overview of the C programming language, including detailed explanations of pointers, memory management, and data structures. It valuable resource for understanding the underlying concepts used in linked lists. This book is commonly used as a textbook in introductory C programming courses and useful reference for both beginners and experienced programmers.
Provides a more in-depth look at data structures, including linked lists, and their associated algorithms. It covers topics such as time complexity analysis and advanced linked list implementations. This book is valuable as additional reading for those who want to deepen their understanding of data structures and algorithms.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser