用单循环链表存储一个环上的数据,并计算任意两个相邻元素之差是否超过2

本文主要是介绍用单循环链表存储一个环上的数据,并计算任意两个相邻元素之差是否超过2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#include<iostream.h>

#include<stdlib.h>

 

typedef struct node{

  int  data;

 struct node *next;

}Lnode,*LinkList;

 

//假设下面的单循环链表均为带头结点,而且L指向尾结点。

 

void CreatLinkList(LinkList &L)

{//建立一个单循环链表L,数据为整数,数据由键盘随机输入。

 int i;

 LinkList head;

 L=(LinkList)malloc(sizeof(struct node));

 L->next=L;

 head=L;

 cout<<"please input the data of the node "<<endl

  <<"input 0 means end :";

 cin>>i;

 while(i)

 {

  LinkList p=(LinkList)malloc(sizeof(struct node));

  if(!p)

  {

   cout<<"alloctation error"<<endl;

   exit(1);

  }

  p->data=i;

  L->next=p;

  p->next=head;

  L=p;

  cout<<"please input the data of the node "<<endl

  <<"input 0 means end :";

  cin>>i;

 }

}

 

void PrintLinkList(LinkList L)

{//输出单循环链表L的数据元素。

 LinkList temp=L->next;

 cout<<"The List Is :"<<endl;

 while(temp->next!=L->next)

 {

  cout<<temp->next->data<<endl;

  temp=temp->next;

 }

}

int LinkListLengh(LinkList L)

{//计算单循环链表L的数据元素个数。

 int i=0;

 LinkList temp=L->next;

 while(temp->next!=L->next)

 {

  i++;

  temp=temp->next;

 }

 return i;

}

void CalculateLinkList(LinkList L, int i)

{int a,b,k=0;

if((i>LinkListLengh(L)) || (i<1) )

 {

  cout<<"输入错误!"<<endl;

  return ;

 }

 LinkList temp=L->next;

 while((temp!=L) && (k<i))

 {

  k++;

  temp=temp->next;

 }

a=temp->data;

b=temp->next->data;

cout<<a<<"-"<<b<<"="<<a-b<<endl;

if((a-b)>=-2&&(a-b)<=2) cout<<"从第"<<i<<"位开始的相临的两个元素的绝对值不超过2!"<<endl;

else cout<<"从第"<<i<<"位开始的相临的两个元素的绝对值超过2!"<<endl;

}

void main()

{//调用上面的各函数,运行并检验程序是否正确。

 LinkList L;

 int i;

 CreatLinkList(L);

 PrintLinkList(L);

 cout<<"链表长度为:"<<LinkListLengh(L)<<endl;

 cout<<"输入要计算的数字位数:"<<endl;

 cin>>i;

CalculateLinkList(L, i);

cout<<"结束请按q!"<<endl;

           if(_getch()=='q') cout<<"再见"<<endl;

           else  {while(1);};

}

这篇关于用单循环链表存储一个环上的数据,并计算任意两个相邻元素之差是否超过2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/612610

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque