定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。
写代码时注意链表是否为空,链表是否只有一个结点。对于链表的逆置我有两种方法:
(1)头插法。
void Reverse1(List plist)
{
if(plist == NULL || plist->next == NULL || plist->next == NULL)
return;
Node *p = plist->next;
Node *q;
plist->next = NULL;
while(p != NULL)
{
q = p->next;
p->next= plist->next;
plist->next = p;
p = q;
}
}
(2)将链表中每个结点的next指针的方向进行改变。
void Reverse2(List plist)//向后转,改变方向
{
if(plist == NULL || plist->next == NULL || plist->next->next == NULL)
return;
Node *p = plist->next;
Node *q = p->next;
Node *s;
p->next = NULL;
while(q != NULL)
{
s = q->next;
q->next = p;
p = q;
q = s;
}
plist->next = p;
}
感觉不清楚的可以问我哦。