数据结构学习笔记:单链表反转
程序员文章站
2022-07-14 19:49:19
...
两种方法:表头插入和就地反转,递归留到后面学习再编写。
1. 表头插入
Status ListReverseByInsert(LinkList &L)
{
// 借助一个新的头节点,利用插入法进行反转
if (NULL == L)
{
return ERROR;
}
LinkList newHead = (LinkList)malloc(sizeof(LNode));
if (NULL == newHead)
{
return ERROR;
}
newHead->next = NULL;
LinkList p;
while (NULL != L)
{
p = L;
L = L->next;
p->next = newHead->next;
newHead->next = p;
}
L = newHead->next;
free(newHead);
return OK;
}
2.就地反转
void ListReverseByLocal(LinkList &L)
{
// 链表就地反转
if ((NULL == L) || (NULL == L->next))
{
return;
}
LinkList pCur, pNext;
pCur = L->next;
pNext = pCur->next;
L->next = NULL;
while (NULL != pNext)
{
pCur->next = L;
L = pCur;
pCur = pNext;
pNext = pCur->next;
}
pCur->next = L;
L = pCur;
}
上一篇: 数据结构(二)线性结构之队列
下一篇: Day4 Java学习日记