烟台大学计算机与控制工程学院
作 者: 郝环宇
完成日期: 9.23
问题描述:1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,
即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。
输入描述:若干数据 。
作 者: 郝环宇
完成日期: 9.23
问题描述:1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,
即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。
输入描述:若干数据 。
程序输出:链表中的数据及逆序拍好后的数据。
#include"linklist.h"
#include "stdio.h"
void Reverse(LinkList *l);
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;
}
void Reverse(LinkList *l)
{
LinkList *p,*q;
p=l->next;
l->next=NULL;
while(p!=NULL)
{
q=p->next;
p->next=l->next;
l->next=p;
p=q;
}
}运行结果:
+
心得体会:
运用了头插法,但是不是数组赋值了,链表的赋值方面有点绕,需多加练习,加以熟悉。
本文介绍了一种单链表逆置算法的具体实现方法。通过使用头插法,该算法可以将一个带头结点的单链表进行逆置操作。文章提供了一个C语言示例程序,演示了如何创建链表、逆置链表并输出结果。
&spm=1001.2101.3001.5002&articleId=52635092&d=1&t=3&u=047a46b5d2ff48a7bc29b31ade11719e)
1472

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



