第四周 项目3 【单链表应用1】
来源:互联网 发布:魅族手机怎么关4g网络 编辑:程序博客网 时间:2024/05/22 15:50
/* Copyright (c)2016,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:项目3--单链表应用(1).cpp 作 者:李潇 完成日期:2016年9月18日 版 本 号:v1.0 问题描述:1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置, 即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。 输入描述:若干数据 。 程序输出:链表中的数据及逆序拍好后的数据。 */ //主函数main.cpp的代码#include<iostream>using namespace std;#include<stdio.h>#include"list.h"int main(){ LinkList *L; ElemType a[8]= {1,3,4,6,8,9,10,7}; CreateListR(L,a,8); printf("L:"); DispList(L); Reverse(L); printf("逆置后L: "); DispList(L); DestroyList(L); return 0;}//头文件list.h的代码#ifndef LIST_H_INCLUDED#define LIST_H_INCLUDED#include<stdio.h>#include<malloc.h>typedef int ElemType;//int类型 运用typedef方便快捷typedef struct LNode{ ElemType data; struct LNode *next;//定义单链表节点类型}LinkList;void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表void DispList(LinkList *L);//输出线性表void DestroyList(LinkList *&L); //销毁线性表void Reverse(LinkList *l);#endif // LIST_H_INCLUDED//函数实现list.cpp的代码#include"list.h"void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表{ LinkList *s,*r; int i; L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->next=NULL; r=L; //r始终指向终端结点,开始时指向头结点 for (i=0; i<n; i++)//循环建立数据节点 { s=(LinkList *)malloc(sizeof(LinkList)); s->data=a[i]; //创建数据结点*s r->next=s; //将*s插入*r之后 r=s; } r->next=NULL; //终端结点next域置为NULL}void DispList(LinkList *L)//输出线性表{ LinkList *p=L->next;//p指向开始节点 while (p!=NULL)//p不为NULL,输出*p节点的data域 { printf("%d ",p->data); p=p->next;//p移向下一个节点 } printf("\n");}void DestroyList(LinkList *&L) //销毁线性表{ LinkList *pre=L,*p=L->next;//pre指向*p的前驱节点 while (p!=NULL)//扫描单链表L { free(pre);//释放*pre节点 pre=p; //pre 、p同步后移一个单位 p=pre->next; } free(pre);//循环结束后,p为NULL,pre指向尾节点,释放它}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; }}运行结果:
<img src="http://img.blog.csdn.net/20160918162236157?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />知识点总结:根据头插法尾差法的特点完成链表逆载心得体会:加深了对单链表的尾差法和头插法的理解和应用
0 0
- 第四周 项目3--单链表应用1
- 第四周项目3-单链表应用(1)
- 第四周 项目3-单链表应用1
- 第四周项目3 单链表应用1
- 第四周 项目3 【单链表应用1】
- 第四周项目3--单链表应用1
- 第四周 项目3 : 单链表应用(1)
- 第四周项目3 单链表应用3
- 第四周--项目3-单链表应用3
- 第四周 项目3 单链表应用(3)
- 第四周项目3--单链表应用3
- 第四周-项目3-单链表应用
- 第四周 项目3-单链表应用
- 第四周项目3—单链表应用
- 第四周项目3-单链表应用
- 第四周项目(3):单链表应用
- 第四周项目3--单链表应用(2)
- 第四周项目3-单链表的应用
- Android Activity的Launch Mode
- [从头学数学] 第264节 [计算几何] 点和线段
- 谈谈对Spring IOC的理解
- Qt之窗体任意拖拽两种方法
- iOS8中storyboard中autolayout和size class的使用
- 第四周 项目3 【单链表应用1】
- mysql 利用explain优化sql
- 火狐浏览器崩溃的问题
- 利用FileReader和FormData实现图片预览和上传(base64转二进制文件)
- 关于git的使用记录
- 关于SPI_160918
- ROS_Kinetic_x 基於ROS和Gazebo的RoboCup中型組仿真系統(多機器人協作)
- 数据结构顺序表应用
- Okhttp 3.X 当中 FormEncodingBuilder没有