1. 删除单链列表的非尾节点
解决方案思路: 根据一般思路,要删除单链列表中的节点c语言单链表排序,您必须知道要删除其前任节点,但是在此问题中,您不知道前任节点c语言单链表排序,因此要更改思路,首先删除需要删除的节点及其后继Exchange的数据字段,然后同时删除两者.
void EraseNotTail(pLinkNode pos)
{
assert(pos);
pLinkNode del = NULL;//删除的节点
del = pos->next;
pos->data = pos->next->data;
pos->next = pos->next->next;
free(del);
del = NULL;
}
2. 气泡排序单链表
void BubbleSort(pList * pHead)
{
pLinkNode cur = *pHead;
pLinkNode end = NULL;
int change = 1;
assert(pHead);
if (*pHead == NULL)
{
return;
}
else if (cur->next == NULL)
{
return;
}
while ((cur != end)&&(change))//控制排序几轮
{
change = 0;
while ((cur)&&(cur->next != end))//排序
{
change = 1;
if (cur->data > cur->next->data)
{
DataType tmp = cur->data;
cur->data = cur->next->data;
cur->next->data = tmp;
}
cur = cur->next;
}
end = cur;
cur = *pHead;//使得单链表从头开始
}
}
3. 在当前节点之前插入数据x
思想分析: 根据一般思想,应该先找到该节点的前任节点,然后才能将其插入. 一个很好的解决方案.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-167486-1.html