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

简介: #include#include typedef struct node{  int  data; struct node *next;}Lnode,*LinkList; //假设下面的单循环链表均为带头结点,而且L指向尾结点。

#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);};

}

目录
相关文章
|
3月前
【编织时空二:探究顺序表与链表的数据之旅】(下)
【编织时空二:探究顺序表与链表的数据之旅】
|
3月前
|
存储 索引
【编织时空二:探究顺序表与链表的数据之旅】(上)
【编织时空二:探究顺序表与链表的数据之旅】
|
3月前
|
存储 缓存
【编织时空四:探究顺序表与链表的数据之旅】(上)
【编织时空四:探究顺序表与链表的数据之旅】
【编织时空四:探究顺序表与链表的数据之旅】(上)
|
3月前
|
存储 缓存 算法
【编织时空四:探究顺序表与链表的数据之旅】(下)
【编织时空四:探究顺序表与链表的数据之旅】
|
3月前
【编织时空三:探究顺序表与链表的数据之旅】(下)
【编织时空三:探究顺序表与链表的数据之旅】
|
3月前
|
算法
【编织时空三:探究顺序表与链表的数据之旅】(上)
【编织时空三:探究顺序表与链表的数据之旅】
|
3月前
【编织时空一:探究顺序表与链表的数据之旅】(下)
【编织时空一:探究顺序表与链表的数据之旅】
|
3月前
|
存储 C语言 索引
【编织时空一:探究顺序表与链表的数据之旅】(上)
【编织时空一:探究顺序表与链表的数据之旅】
|
4月前
数据结构单链表之交换链表中的节点而不交换数据 | 第八套
数据结构单链表之交换链表中的节点而不交换数据 | 第八套
27 0
|
10月前
|
缓存 NoSQL API
【Redis基础知识 六】Redis底层数据编码之链表
【Redis基础知识 六】Redis底层数据编码之链表
37 0
【Redis基础知识 六】Redis底层数据编码之链表