【发布时间】:2021-02-11 15:16:03
【问题描述】:
我正在创建一个在匹配时添加/删除头部的程序,但是它不起作用。这两个功能有什么问题吗?我有更多的链表代码,但这是我在程序中使用的两个。
它们应该类似于堆栈的推送/弹出功能
linkedList* createLinkedList()
{
linkedList* list;
list = malloc(sizeof(linkedList));
list->size = 0;
list->head = NULL;
list->tail = NULL;
return list;
}
void insertStart(linkedList* list, void* inData)
{
listNode* node;
node = (listNode*)malloc(sizeof(listNode));
node->data = inData;
list->size++;
if (list->head == NULL)
{
list->head = node;
list->tail = node;
node->next = NULL;
node->prev = NULL;
}
else
{
list->head->prev = node;
node->next = list->head;
node->prev = NULL;
list->head = node;
}
}
void* removeStart(linkedList* list)
{
listNode* removed = NULL;
/* void* outData = NULL;*/
removed = list->head;
list->head = list->head->next;
list->head->prev = NULL;
list->size -= 1;
/* outData = removed->data;
free(removed);*/
return removed;
}
【问题讨论】:
-
只是一个旁注,除非您对
size成员有特殊需要,否则当您向列表添加更多功能时,size成员可能很难维护 - 并且用处有限。 (除了回答“我有多少节点?”或者如果您限制节点数量)请记住一些事情。
标签: c linked-list stack doubly-linked-list function-definition