您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习笔记(二) 链表之带表头结点的单循环链表基本操作

2018-01-22 15:48 645 查看
以下是带表头节点的单循环链表的基本操作,包括链表的创建、形成循环链表以及打印。

#include<iostream>
using namespace std;
//抽象数据类型
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}ListNode,*LinkList;

//带表头结点的单链表的创建
ListNode* Create(int i)
{
datatype x;
ListNode *head,*p,*q;
head=new ListNode;
q=head;
cout<<"请输入5个数:"<<endl;
while(i--)
{
p=new ListNode;
cin>>x;
p->data=x;
p->next=NULL;
if(q!=NULL)
q->next=p;
q=p;
}
return head;
}

//形成循环链表
void CreateCircle(LinkList &rear,int i)
{
datatype x;
ListNode *p,*q,*head;
p=head=Create(5);
while(p->next!=NULL)
p=p->next;
rear=p;
rear->next=head;
}

//打印单链表
void Print(LinkList &rear)
{
//参数检查
if(rear==NULL)
{
cout<<"链表为空!"<<endl;
return;
}
ListNode *p;
p=rear->next;
cout<<"链表中的元素为:"<<endl;
/*while(p!=rear)
{
cout<<p->data<<" ";
p=p->next;
}*/
cout<<"rear->data= "<<rear->data<<endl;
cout<<"rear->next->next->data= "<<rear->next->next->data<<endl;
}

//测试函数
int main()
{
LinkList rear;
CreateCircle(rear,5);
Print(rear);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐