这个单循环链表建立的问题在哪呀?
#include<iostream>
using namespace std;
class Node
{
public:
int mydata;
Node *next;
Node()
{
next=NULL;
}
Node(int data,Node *next1)
{
mydata=data;
next=next1;
}
};
class SingleLinkedList
{
public:
Node *head,*s,*p;
SingleLinkedList(int a[],int n);
~SingleLinkedList();
int Length();
int Get(int i);
int Locate(int x);
void Insert(int i,int x);
int Delete(int i);
void PrintList();
};
SingleLinkedList::SingleLinkedList(int a[],int n)
{
head=new Node;
p=head;
for(int i=0;i<n;i++)
{
s=new Node;
s->mydata=a[i];
p->next=s;p=s;
}
s->next=head;
}
int SingleLinkedList::Length()
{
int count;
s=head->next;count=0;
while(s->next!=head)
{
s=s->next;
count++;
}
return count;
}
int SingleLinkedList::Get(int i)
{
int count;
s=head->next;count=1;
while(s->next!=head&&count<i)
{
s=s->next;
count++;
}
return s->mydata;
}
int SingleLinkedList::Locate(int x)
{
int count;
s=head->next;count=1;
while(s->next!=head)
{
if(s->mydata==x) return count;
s=s->next;
count++;
}
return 0;
}
void SingleLinkedList::Insert(int i,int x)
{
s=head;int count=0;
while(s->next!=head&&count<i-1)
{
s=s->next;
count++;
}
p=new Node;p->mydata=x;
p->next=s->next;s->next=p;
}
int SingleLinkedList::Delete(int i)
{
int x;
s=head;int count=0;
while(s->next!=head&&count<i-1)
{
s=s->next;
count++;
}
p=s->next;x=p->mydata;
s->next=p->next;
delete p;
return x;
}
void SingleLinkedList::PrintList()
{
s=head->next;
while(s->next!=head)
{
cout<<s->mydata<<endl;
s=s->next;
}
}
SingleLinkedList::~SingleLinkedList()
{
while(head!=NULL)
{
s=head;
head=head->next;
delete s;
}
}
void main()
{
int a[4]={1,2,2,4};
SingleLinkedList list(a,4);
list.Length();
}
using namespace std;
class Node
{
public:
int mydata;
Node *next;
Node()
{
next=NULL;
}
Node(int data,Node *next1)
{
mydata=data;
next=next1;
}
};
class SingleLinkedList
{
public:
Node *head,*s,*p;
SingleLinkedList(int a[],int n);
~SingleLinkedList();
int Length();
int Get(int i);
int Locate(int x);
void Insert(int i,int x);
int Delete(int i);
void PrintList();
};
SingleLinkedList::SingleLinkedList(int a[],int n)
{
head=new Node;
p=head;
for(int i=0;i<n;i++)
{
s=new Node;
s->mydata=a[i];
p->next=s;p=s;
}
s->next=head;
}
int SingleLinkedList::Length()
{
int count;
s=head->next;count=0;
while(s->next!=head)
{
s=s->next;
count++;
}
return count;
}
int SingleLinkedList::Get(int i)
{
int count;
s=head->next;count=1;
while(s->next!=head&&count<i)
{
s=s->next;
count++;
}
return s->mydata;
}
int SingleLinkedList::Locate(int x)
{
int count;
s=head->next;count=1;
while(s->next!=head)
{
if(s->mydata==x) return count;
s=s->next;
count++;
}
return 0;
}
void SingleLinkedList::Insert(int i,int x)
{
s=head;int count=0;
while(s->next!=head&&count<i-1)
{
s=s->next;
count++;
}
p=new Node;p->mydata=x;
p->next=s->next;s->next=p;
}
int SingleLinkedList::Delete(int i)
{
int x;
s=head;int count=0;
while(s->next!=head&&count<i-1)
{
s=s->next;
count++;
}
p=s->next;x=p->mydata;
s->next=p->next;
delete p;
return x;
}
void SingleLinkedList::PrintList()
{
s=head->next;
while(s->next!=head)
{
cout<<s->mydata<<endl;
s=s->next;
}
}
SingleLinkedList::~SingleLinkedList()
{
while(head!=NULL)
{
s=head;
head=head->next;
delete s;
}
}
void main()
{
int a[4]={1,2,2,4};
SingleLinkedList list(a,4);
list.Length();
}
...全文
相关推荐
Josephus问题C++单循环链表实现
这个完全符合课本上习题的要求,我作业交的就是这个,我自己还在里面做了详细的注释
带头结点的单循环链表,删除所有值大于min,小于max的结点的算法
一个带头结点的单循环链表,结点类型为(data.next),以haed为头指针,每个结点的data域存放的是一个整数,试构造一个删除所有值大于min,小于max的结点的算法
单循环链表(带头结点和不带头结点)
自己在实验课是做的。主要是单循环链表,有带头结点和不带头结点两种情况。 文件里分别进行了实现。有两个文件
单循环链表
单循环链表
约瑟夫环实验 建立单循环链表
约瑟夫环的问题描述 问题描述:编号为1,2… n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数的上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从他的顺时针方向上的下一个开始重新从1报数,如此下去,直至所有人全部出列为止,设计一个程序求出出列顺序。 基本要求: ⑴.利用单循环链表作为存储结构模拟此过程; ⑵.键盘输入总人数、初始报数上限值m及各人密码; ⑶.按照出列顺序输出各人的编号。


