#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);};
}
分享到:
相关推荐
循环链表是一种特殊的链式数据结构,其最后一个元素的指针指向了链表的第一个元素,形成一个闭合的环状结构。与线性链表不同,循环链表没有明显的起点和终点,使得在某些场景下遍历和操作更加方便。在C++编程中,不...
线性链表主要包括单链表、双向链表、单循环链表和双向循环链表等类型,其中单链表是最基础的一种。 单链表是由一组地址任意的存储单元组成,用于存放线性表中的数据元素。由于逻辑上相邻的元素在物理位置上可能并不...
循环链表是链式存储结构的一种变体,其中最后一个元素的指针域指向链表的第一个元素,形成一个闭合的环。这样,即使在遍历链表时到达了最后一个元素,也可以继续从头开始,提供了更灵活的遍历方式。 总结来说,数据...
线性表是数据结构中最基础且重要的概念之一,它是由n(n≥0)个相同类型元素构成的有限序列。在本单元中,我们将探讨线性表的两种主要存储结构:顺序存储结构和链式存储结构。 1. **顺序存储结构**: 顺序存储结构是...
对于只在表的首尾进行操作的线性表,采用单循环链表或带尾指针的单循环链表是理想的,因为它们能方便地添加和移除元素。在线性表中插入一个保持有序的新元素,时间复杂度是O(n),因为可能需要遍历整个列表。删除...
1. 设一个环上有若干个整数,现采用单向循环链表 L 存储该环,设计算法判断环上任意两个相邻元素值之差的绝对值是否不超过 2。 2. 计算二叉树上单分支结点数目。 3. 设算法实现按层次遍历(遍历操作定义为打印结点的...
可以设计一个函数,根据链表中的数据按规则计算每个节点(即每个运动员)的积分,并更新到相应节点上。 在实际开发过程中,为了确保系统的稳定性和效率,还需要考虑内存管理和并发控制。对于内存管理,要防止内存...
如果两个元素在逻辑上有直接的关系(比如线性列表中的相邻元素),那么它们在内存中的位置也是相邻的。这种结构的最大优点是能够快速地通过索引访问任意一个元素,因为元素的位置可以直接计算出来。 - **链式存储...
2. **单循环链表**:单循环链表是一种链表,最后一个节点的指针指向链表的第一个节点,形成一个环状结构。题目中提到的操作涉及到两个链表的合并。 3. **栈**:栈是一种后进先出(LIFO)的数据结构。题目中问及了...
- (6)D,P->Rlink==L表示P指向的元素是双循环链表的最后一个元素。 - (7)B,P->next==Q表示P指向的元素是Q的前驱。 7. **应用与选择**:根据数据操作的频率和特性,选择合适的数据结构至关重要。如需要快速...
能使用二分法查找的线性表必须满足用顺序存储结构和线性表是有序表两个条件。 “有序”是特指元素按非递减排列,即从小到大排列,但允许相邻元素相等。下一节排序中,有序的含义也是如此。 对于长度为n的有序线性表...
- 在最后一个元素后插入和删除,单循环链表更节省时间。 - 静态链表的指针通常是数组下标。 - 链表无法随机访问元素,但空间利用率高且插入删除灵活。 - 在双循环链表中插入结点涉及前后指针的调整。 总结来说...
数据结构是计算机科学中的核心概念之一,主要研究数据的组织和存储方式,以便于高效地访问和操作数据。线性表是最基础的数据结构类型,它是一组数据元素(可以是任何类型)按照特定顺序排列的集合。 1. 线性表的...
建立n个人的单循环链表存储结构,运行结束后,输出依次出队的人的序号。 栈和队列 某商场有一个100个车位的停车场,当车位未满时,等待的车辆可以进入并计时;当车位已满时,必须有车辆离开,等待的车辆才能进入;当...
线性表是数据结构中的基本概念,是一种物理存储单元上具有逻辑顺序的线性集合,由n(n>=0)个相同类型元素构成。线性表可以采用两种存储方式:顺序存储和链式存储。 1. 顺序存储结构:线性表的元素存储在一片连续的...
- 顺序存储结构的线性表置逆,可以使用两个指针,一个指向当前元素,一个指向末尾,依次交换两指针所指元素并移动指针,直到相遇。 - 链式存储结构的线性表置逆,可以使用三个指针,一个指向当前元素,一个指向...
- **单循环链表**:最后一个节点的指针指向第一个节点,形成一个闭环。 6. **头结点、头指针、首结点的概念**: - **头结点**:位于链表第一个节点之前,用于方便插入和删除操作。 - **头指针**:指向链表的第一...
- 表4:每个元素包含两个链接,一个是前驱链接,另一个是后继链接,属于双向链接。 - **正确答案**:(1)链接 (2)B. 单向链接 (3)E. 循环链接 (4)E. 循环链接 (5)C. 双向链接 **12. 错误的陈述** - **...
- 带尾指针的单循环链表:除了具有单循环链表的特点外,还包含一个指向尾节点的指针。 - 双循环链表:每个节点都有前驱和后继指针,头尾相连形成闭环。 2. **图的表示方式**: - 邻接表:通过链表来存储每个顶点...
完全图是指一个无向图中任意两个不同节点之间都存在一条边。对于N个节点的完全图,共有N(N-1)/2条边。 #### 19. 有向完全图 有向完全图是指在一个有向图中,每个节点与其他所有节点之间都有一条方向确定的边。对于N...