问题及代码:
/*
*Copyright (c)2016,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:
*作 者:陈梦雪
*完成日期:2016年9月23日
*版 本 号:v1.0
*
*问题描述:设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结 点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。
*输入描述:无
*程序输出:整理后的链表
*/
main.cpp
#include "linklist.h"
void Reverse(LinkList *&L)
{
LinkList *p=L->next,*q;
L->next=NULL;
while (p!=NULL) //扫描所有的结点
{
q=p->next; //让q指向*p结点的下一个结点
p->next=L->next; //总是将*p结点作为第一个数据结点
L->next=p;
p=q; //让p指向下一个结点
}
}
int main()
{
LinkList *L;
ElemType a[]= {1,3,5,7,2,4,8,10};
CreateListR(L,a,8);
printf("L:");
DispList(L);
Reverse(L);
printf("逆置后L:");
DispList(L);
DestroyList(L);
return 0;
}运行结果:<img src="https://img-blog.youkuaiyun.com/20160923112303697?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
本文介绍了一种用于单链表逆置的算法,并通过C++代码实现了该算法。算法首先初始化一个空链表,然后遍历原链表,逐个将节点插入到新链表的头部,从而达到逆置的效果。
780

被折叠的 条评论
为什么被折叠?



