如何浏览链表?

时间:2014-10-04 21:54:08

标签: c string pointers linked-list

因此,假设我的链接列表中有3个节点,每个节点都有一个名字。该列表应按字母顺序排序。我需要用指针导航

我有一个.h接口和一个.c文件实现,因此您可以假设任何原型,而List.c文件不在头文件中。

让我解释一下逻辑上的内容,让我的代码更容易理解。 ListP是一个指向struct List的指针,它具有简单的属性,如逻辑大小,物理大小和指向链表头部的指针。字符串的类型定义为ListItemP,以便在需要时轻松重建为整数链表等。

List.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "List.h"

typedef struct Entry *EntryP;

EntryP newEntry(ListItemP thisItem);

struct List
{
    int sizeL;
    int sizeP;
    ListItemP head;
};

struct Entry
{
    ListItemP content;
    struct Entry *next;
};

ListP newList()
{
    ListP thisList = (ListP) malloc(sizeof(ListP));
    thisList->head = 0x00;
    thisList->sizeL = 0;
    thisList->sizeP = 0;
    return thisList;
}

void insertItemList(ListP thisList, ListItemP thisItem)
{
    EntryP thisEntry = newEntry(thisItem);
    thisEntry->content = thisItem;

    // Make a conditional for the first condition (no items in list)
    if ((thisList->head == 0x00) || (strcmp(thisItem, thisList->head) < 0)) {
        thisList->head = thisEntry->content;
        thisEntry->next = 0x00;
    }
   // The other conditional are what I don't understand, how to put go through
      navigate through the list via pointers and such.

    thisList->sizeL++;
    thisList->sizeP++;
}

void displayList(ListP thisList)
{
    printf("First Item: %s\n",thisList->head);
}

/*
 * Not in the interface
 */
EntryP newEntry(ListItemP thisItem)
{
    EntryP thisEntry = (EntryP) malloc(sizeof(EntryP));
    thisEntry->content = thisItem;
    thisEntry->next = NULL;
    return thisEntry;
}

我会发布我的main.c(或者test.c或者你想要的任何内容),但我真的不认为它会有所帮助,所有链表导航都会发生在List中。 c档。

所以我的问题是这个,假设我有3个或4个或多个节点,我怎么能在它们周围导航所以我可以做像字符串比较和yadda yadda之类的事情,以便按字母顺序在链表中放置新字符串

谢谢!

0 个答案:

没有答案