simple example of a linked list in a linked list in C

Posted on 2004-10-12
Medium Priority
Last Modified: 2010-04-15
Hi, i have a small question. Can someone give me an example of a linked list in a linked list? so for example the data are classes of students; the first linked list are classes and in each class is a linked list of students. also how do I add/delete/manipulate linked list in linked list?
PS: just a small example would do
Question by:Mytix
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
LVL 12

Assisted Solution

stefan73 earned 200 total points
ID: 12295703
Hi Mytix,
There's nothing mystical about what you want to do.

Just do a proper wrapping of your list functionality, like:

typedef struct Node_s {
    struct Node_s* next, *prev;
} Node;

typedef struct ListHead_s {
    Node* head,*tail;
} ListHead;

...and define the appropriate functions.
From a more abstract view, each school contains a set of classes and each class contains a set of students.
Make sure you separate the "technical" aspects from the "business flow" aspects, e.g.:

void student_enroll_class(Student* student,Class* the_class) /* Don't name anything "class". That's calling for trouble... */
...as a "business flow" step. Within that, you'd handle the list

Just write a routine for all things a student can do with a class. Then write the routines for what a school can do with its classes.

(That's an OO-like approach, but in this case, it's pretty much feasible)


LVL 45

Expert Comment

by:Kent Olsen
ID: 12297270
Hi Mytix,

Stefan's correct -- there is no magic here.  (Though the concept may be tough to visualize until you've actually used it.)

Break the problem into the sum of its parts.  You've got a structure that defines a class:

typedef struct
  int   ClassNumber;
  int   ClassStartTime;
/*  etc  */
  class_t *Next;
  student_t *StudentList;
} class_t;

and a structure that defines a student:

typedef student
  int   StudentNumber;
/*  etc  */
  student_t *Next;

Tie it all together with a starting point for the class list:

class_t  *ClassList;

Now when you build the structures, you generate data that (conceptually) looks like this:

Class1  ->  Student1  ->  Student2  ->  Student3 ->  ....
Class2  ->  Student1  ->  Student4  ->  Student5 ->  ....
Class3  ->  Student4  ->  Student 6 ->  Student 7 -> ...

Your "primary" linked list is class, and within each class you have a list of students.  The thing to remember is that when you build your functions to manage these lists, you build a set of functions to manage classes and another to manage students.  Within the class functions you reference the student lists only when you need access to student data.  Within the student functions, you should never have to reference the class lists.  (Of course, if/when the student data contains the students "list" of classes, this may change.)

Good Luck,


Author Comment

ID: 12470916
thanks for the replies, but i still am stuck (and recovering from my illness)
how do i actually go through the linked list of linked list and add data to them? and do manipulation to these linked list of linked list.
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

LVL 45

Accepted Solution

Kent Olsen earned 200 total points
ID: 12472506
Hi Mytix,

Still no magic here.  (Though there may be a sorcerer or two at work.  :)  )  Break the problem down to it's components.

Let's add student "Jennifer Smith" to "Biology 101".  (Jennifer is much more interesting than John.)

First we find the pointer to the Biology class.

class_t  *ClassList;
class_t  *CurrentClass;
student_t  *CurrentStudent;

  CurrentClass = FindClass (ClassList, "Biology 101");
  if (CurrentClass == NULL)  /*  Class not found  */
    fprintf (stderr, "Class not defined.\n");
    CurrentStudent = FindStudent (CurrentClass->StudentList, "Jennifer Smith");
    if (CurrentStudent == NULL)
      fprintf (stderr, "%s is not registered in this class\n", "Jennifer Smith");
      /*  Student found in this class  */

Good Luck,

Author Comment

ID: 12479987
thats strange, im still quite perplexed:
are the functions FinClass and FindStudent built-in? or must i make those functions?
im thinking of sorting the classes and students; students first then classes, but still cant get around the basic sorting of linked list, much more linked list of linked lists.
thanks for your help
LVL 45

Expert Comment

by:Kent Olsen
ID: 12482477

You're going to have to build these functions yourself.  The standard C libraries provide you with very few "built in" functions for handling linked lists.

Start easy and build up.

Write your AddClass (), ShowClasses(), and FindClass () functions.  Once you've built the linked list of classes we can move on to building the list of lists.


Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
Examines three attack vectors, specifically, the different types of malware used in malicious attacks, web application attacks, and finally, network based attacks.  Concludes by examining the means of securing and protecting critical systems and inf…
The goal of this video is to provide viewers with basic examples to understand and use structures in the C programming language.
Video by: Grant
The goal of this video is to provide viewers with basic examples to understand and use for-loops in the C programming language.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question