用单循环链表存储一个环上的数据,并计算任意两个相邻元素之差是否超过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);};

}

时间: 2024-08-30 10:48:00

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

自动化-每日自动向一个网页上填写数据,需要用到什么知识?

问题描述 每日自动向一个网页上填写数据,需要用到什么知识? 我想做一个自动化脚本,每天在网页上自动填写一个容量数据,请问需要什么技术?最好是python,其他也可以,着重思路,之前没写过web相关的代码.就比如我每天自动登录CSDN吧(我的用户名和密码就是需要填写的数据). 解决方案 http抓包(比如fiddler) 照着写,可以用curl或者java的httpclient 也可以用webbrowser 解决方案二: 是说每天定时做一个任务吗?可以用spring的任务调度,再加上websock

在LabView上如何存储MapX地图上的数据

问题描述 在LabView上如何存储MapX地图上的数据 也就是当我点击某一处时,该点的经纬度就保存下来,求各位大神解答

日立开发新存储技术 玻璃上保存数据上亿年

据<日经BP>网站报道,日立和京都大学共同开发了一种新的光记录技术,在石英玻璃上http://www.aliyun.com/zixun/aggregation/17326.html">存储数据.该技术最大特点是解决了之前光盘和磁盘.磁带存储中数据无法长期保存的难题,记录数据可以保存上亿年.该技术采用二氧化硅纯度比普通玻璃高的石英玻璃作为记录介质.通过照射高功率的毫微微秒脉冲激光,在石英玻璃内形成折射率不同的微小区域(点).有点的部分记作"1",无点的部分记作

日立开发出新存储技术 玻璃上保存数据上亿年

据<日经BP>网站报道,日立和京都大学共同开发了一种新的光记录技术,在石英玻璃上存储数据.该技术最大特点是解决了之前光盘和磁盘.磁带存储中数据无法长期保存的难题,记录数据可以保存上亿年. 存储原理及测试结果 该技术采用二氧化硅纯度比普通玻璃高的石英玻璃作为记录介质.通过照射高功率的毫微微秒脉冲激光,在石英玻璃内形成折射率不同的微小区域(点).有点的部分记作"1",无点的部分记作"0". 刻录数据利用普通光学显微镜读取播放.现已证实,能以超过CD光盘面记录

两个域名解析到一个主机上有影响吗?

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 今天分析下域名绑定的问题.将域名绑定到网站上,给搜索引擎提供一个唯一确认的身份,便于网站收录和排名.然而有些朋友就会想,如果我同时绑定两个甚至多个域名到一个网站上,这样不就相当于同时有多个网站参与排名了吗? 从某些方面来讲,这种想法的确是有道理的.但是由于搜索引擎常年与网站作弊相斗争,坚持维护版权利益,因此对相同的内容的网页,一定要将其中一个

c语言-关于创建链表的一个小问题。

问题描述 关于创建链表的一个小问题. 我正在学习链表,下图是一个结构体,然后有一个结构体指针.我知道链表有一个表头,指向数据,然后有指针指向下一数据. 我就是不明白为什么在一个结构体指针函数头里面写链表,这和指针函数头什么意思. 为什么SLIST *Creat_Slist()(一个结构体指针函数头)创建一个链表?这个函数头什么意思? 我会在main里面创建静态链表(这和链表在main函数头里面)并且这个静态链表能够运行. 我正在学,原谅我知识浅薄,请帮帮我. 解决方案 要看完整的代码,creat

c#怎么读取服务器上的数据

问题描述 在阿里云服务器上创建了一个实例,上面每天都有数据接收,怎么通过c#读取上面的数据,求高人指教代码 解决方案 解决方案二:webservice取数据解决方案三:能说的具体一点吗,最好能有代码解决方案四:这个需要服务器和客户端配合才行.你可以将收到的数据以文本文件的形式存放在iis的目录下,用C#在客户端用WebClient.DownloadString去取.解决方案五:如果你用.net的话,做个wcf.(其实很简单呐)如果嫌技术太难的话,生成好文件用ftp下载下来就可以.或者把数据放到数

如何保护旧 SSD 上的数据?建议在丢弃前将它彻底粉碎

固态硬盘驱动器(SSD)的高速读写性能深受用户们的喜爱,但是它的使用寿命却难以与机械硬盘(HDD)相媲美.而在到达了旅程的终点之后,我们该"如何正确地告别存储在硬盘上的数据"呢?HDD 是一种磁记录介质,因此可以通过消磁的方式进行处理(当然彻底无忧的还是打孔后用铝热剂将盘体熔融).至于采用了闪存作为存储介质的 SSD,Mose Security 给出的建议是 -- 彻底粉碎. 在线存储服务提供商 Backblaze 则表示,如果你想要保护好一块旧 SSD 上的数据,最好是将它全盘加密(

关于批量上传数据的问题

问题描述 我要做一个批量上传数据的工具,我原来做的是把数据放入excel里,然后调用对方的webservice把数据以xml的格式逐条传过去,但是现在情况变了,现在每条数据不光有文字信息,还有一张到几张不等的图片,我该怎么传给对方呢?我该怎么做,对方的webservice该怎么写(对方的webservice是根据我的需求写).不知道表述清楚没有,求思路~~~~~~和关键代码...