Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我无法理解C中的排序链表。
我有以下代码:
我很难理解
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
3年前关闭。
我无法理解C中的排序链表。
我有以下代码:
void create(ListNode **pStart, int input)
{
ListNode *pNew;
ListNode *pPrevious;
ListNode *pCurrent;
pNew = malloc(sizeof(ListNode));
if (pNew != NULL)
{
pNew->data = input;
pNew->pNext = NULL;
pPrevious = NULL;
pCurrent = *pStart;
while (pCurrent != NULL && input > pCurrent->data)
{
pPrevious = pCurrent;
pCurrent = pCurrent->pNext;
}
if (pPrevious == NULL)
{
pNew->pNext = *pStart;
*pStart = pNew;
}
else
{
pPrevious->pNext = pNew;
pNew->pNext = pCurrent;
}
}
else
{
printf("%c not inserted. No memory available.\n", input);
}
}
我很难理解
pCurrent = *pStart;
的部分,因为pNew在技术上不是第一个头节点吗? pCurrent = *pStart
代表什么? 最佳答案
调用create
时,您必须区分3种情况:
清单是空的input
值小于或等于现有的最小元素->它成为新的列表头input
值大于现有的最小元素->将其插入列表中更远的位置
为了找到要插入的位置,代码从列表开头*pStart
开始并继续,直到找到插入位置为止。pNew
代表您要插入的项目,与查找插入位置无关。
关于c - 了解排序的链表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35553808/
10-11 16:03