因此,假设我的链接列表中有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之类的事情,以便按字母顺序在链表中放置新字符串
谢谢!