Linked List of characters

From: John Evans (evansj@HI-LINE.NET)
Date: 05/03/98

I'm trying to code a mob stacking routine that involves a linked list.
Here's what I have at the moment:

  struct list_struct {
    struct char_data *ch;       /* mob data */
    struct list_struct *next;   /* Next in the list */
    int num;                    /* Number of times this mob occurs */
  struct list_struct *my_list = NULL, *temp = NULL;

  for (i = list; i; i = i->next_in_room) {

    [code here to list mobs that do not match prototype and pcs]

        /* At this point we have a mob that probably needs to be listed
           on the same line as several others. */
        /* Loop through internal list, find slot and increment count. */
        if (!my_list) {
          my_list->ch = ch;
          my_list->num = 1;
          my_list->next = my_list;
        else {
          found = FALSE;
          for (temp = my_list; temp && !found; temp = temp->next) {
            if (GET_MOB_VNUM(temp->ch) == GET_MOB_VNUM(i)) {
              found = TRUE;
        /* If mobile not found in internal list, add to list */
        if (!found) {
          temp->ch = ch;
          temp->num = 1;
          temp->next = my_list;
          my_list = temp;

  /* Loop through internal list and print them all */
  if (my_list)
    for (temp = my_list; temp; temp = temp->next)
      list_one_char(temp->ch, ch, temp->num);

What happens when you look at a room with a prototypical mob is a crash,
but without a core dump, so I have no chance of debugging. :(  My
experience with creating linked lists is in Pascal and I haven't touched
them in years.

Could someone please point out where I'm going wrong?

Thank you,
John Evans <>  --

Any sufficiently advanced technology is indistinguishable from magic.
--Arthur C. Clarke

     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | |

This archive was generated by hypermail 2b30 : 12/15/00 PST