第四周 项目 3 - 单链表应用 (1)

本文介绍了一种单链表逆置算法的实现方法,并通过示例代码展示了如何创建链表、显示链表内容以及逆置链表。该算法适用于带头结点的数据域依次为a1,a2,…,an的单链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

list.h 代码

/*
*Copyright (c) 2017,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:
*作    者:陈军正
*完成日期:2017年9月26日
*版 本 号:v1.0
*
*问题描述:设计一个算法, 将一个带头结点的数据域依次为 a1, a2, …, an(n≥3) 的单链表的所
*有结点逆置, 即第一个结点的数据域变为 an, …, 最后一个结点的数据域为 a1。 实现这个算法,并完成测试。
*/
typedef struct LNode
{
	int data;
	struct LNode *next;
}LinkList;
void CreateList(LinkList *&L,int a[],int n );
void DisplyList(LinkList *&L);
void DestroyList(LinkList *&L);
void Reverse(LinkList *&L);
main.cpp 代码

#include <iostream>
#include <list.h>
using namespace std;

int main()
{
	int a[6] = { 1,2,3,4,5,6 };
	LinkList *L;
	CreateList(L,a,6);
	cout << "逆置前:";
	DisplyList(L);
	Reverse(L);
	cout << "逆置后:";
	DisplyList(L);
	system("pause");
		return 0;
}

list.cpp 代码

#include <list.h>
#include <iostream>
#include <malloc.h>
using namespace std;

void CreateList(LinkList *&L,int a[], int n)
{
	LinkList *S;
	L = (LinkList *)malloc(sizeof(LinkList));
	int i;
	L->next = NULL;
	for (i = 0; i<n; ++i)
	{
		S = (LinkList *)malloc(sizeof(LinkList));
		S->data = a[i];
		S->next = L->next;
		L->next = S;
	}
}

void DisplyList(LinkList *&L)
{
	LinkList *p;
	p = L->next;
	while (p != NULL)
	{
		cout << p->data << " ";
		p = p->next;
	}
}
void Reverse(LinkList *&L)
{
	LinkList *p = L->next, *q;
	L->next = NULL;
	while (p!=NULL)
	{
		q = p->next;
		p->next = L->next;
		L->next = p;
		p = q;
	}
}

void DestroyList(LinkList *&L)
{
	LinkList *p = L, *q=p->next;
	while (q != NULL)
	{
		free(p);
		q = p->next;
	}
	free(p);
}

运行结果


总结:熟悉链表的建立和输出,以及链表的逆置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值