基于链表基本算法库上的应用实现。
代码如下;
/*
*完成日期:2017,9,21.
*版 本 号: v1.0
*
*问题描述: 设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,
即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试
*输 入: 无
*输 出: 输出逆置后的结果。
*/
#include<iostream>
#include<malloc.h>
using namespace std;
#include"lianbiao.h"
void Reverse(LinkList *&L);
int main()
{
LinkList *L;
Elemtype v;
Elemtype x[5]={1,3,5,7,9};
CreatListR(L,x,5);
cout<<"原链表的数据内容 : ";
DispList(L);
cout<<endl;
Reverse(L);
cout<<"逆置后的链表数据内容 :";
DispList(L);
return 0;
}
//新开辟复制法
void Reverse(LinkList *&L)
{
LinkList *s;
intiList(s);
Elemtype x;
int j=ListLength(L),i=0;
for(j;j>0;j--)
{
GetElem(L,j,x);
ListInsert(s,++i,x);
}
L=s;
}
基本思路:
建立一个函数明教Reverse作用是用来逆置链表。先建立一个新的LinkList类型指针,然后利用初始化函数进行初始化,而后逆序从L的最后一个元素开始取出L里的元素,再使用插入算法把元素插入到新的连表里,就完成了。
运行结果: