我正在创建一个程序,在该程序中我从文件中读取信息并在4个链接列表之间分配信息。我创建了以下结构来表示信息。

struct ListStruct{
  int waitingTime;
  struct ListStruct *next;
};


我的问题是与这些typedef有关。虽然第一个定义了结构,但是我不确定第二个做了什么。它创建了指向结构“ Patron”的指针,但是是否进行了typedef表示是否可以使我轻松地在4个链表之间移动?如果是这样,一种有效的利用方式是什么?

typedef struct ListStruct Patron;
typedef Patron *ListHeadPtr;

最佳答案

它是否为typedef暗示是否可能使我轻松
  在4个链表之间移动?


不,只是为了方便。


  如果是这样,一种有效的利用方式是什么?


您现在可以将链接列表传递给函数,如下所示:

ListHeadPtr append(ListHeadPtr aList, ListHeadPtr anotherList) {
    ....
}


附录

要“限制”一个元素(即,将其插入列表的开头):

ListHeadPtr cons(int waitTime, ListHeadPtr list) {
    ListHeadPtr first = malloc(sizeof(Patron));
    if (first == NULL) {
        /* Take evasive action */
    }
    first->waitingTime = waitTime;
    first->next = list;
    return first;
}

08-16 02:30