关于环形链表的建立,删除,插入操作演示
2017-01-19 17:35
197 查看
#include<iostream>
using namespace std;
struct node{
int x;
struct node *next,*pre;
node(){
x=0;next=NULL;pre=NULL;
}
};
node *h,*p,*q;
int main(){
int i,j,k,m,n,c;
cin>>n>>m>>c;
h=new node;
h->x=1;
p=h;
for(i=2;i<=n;i++){
q=new node;
q->x=i;
p->next=q;
q->pre=p;
p=q;
}
p->next=h;h->pre=p;
p=h;
while(p->x!=c)p=p->next;
q=new node;q->x=n+1;
q->next=p->next;p->next->pre=q;
p->next=q;q->pre=p;
k=1;
p=h;
while(p->next!=p){
p=p->next;
k++;
if(k==m){
q=p;
cout<<p->x<<" ";
p->next->pre=p->pre;
p->pre->next=p->next;
p=p->next;
delete(q);
k=1;
}
}
cout<<endl;
cout<<p->x;
return 0;
}
using namespace std;
struct node{
int x;
struct node *next,*pre;
node(){
x=0;next=NULL;pre=NULL;
}
};
node *h,*p,*q;
int main(){
int i,j,k,m,n,c;
cin>>n>>m>>c;
h=new node;
h->x=1;
p=h;
for(i=2;i<=n;i++){
q=new node;
q->x=i;
p->next=q;
q->pre=p;
p=q;
}
p->next=h;h->pre=p;
p=h;
while(p->x!=c)p=p->next;
q=new node;q->x=n+1;
q->next=p->next;p->next->pre=q;
p->next=q;q->pre=p;
k=1;
p=h;
while(p->next!=p){
p=p->next;
k++;
if(k==m){
q=p;
cout<<p->x<<" ";
p->next->pre=p->pre;
p->pre->next=p->next;
p=p->next;
delete(q);
k=1;
}
}
cout<<endl;
cout<<p->x;
return 0;
}
相关文章推荐
- 猴子选大王改编;关于环形链表的建立,删除,插入操作演示
- 链表建立、删除、插入基本操作
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- 单向链表的删除及插入操作(以头插入法建立单向链表)
- 【程序员面试宝典】数据结构基础二单链表循环链表的操作 建立|插入删除|打印|合并
- 链表的基本操作(C语言版):建立,插入,删除,查找,输出
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- 单链表的建立,查找,插入,删除,测长,打印,逆置操作实现
- 单链表建立,插入,删除,查找,遍历操作
- 单链表建立,插入,删除,查找,遍历操作
- 数据结构之循环链表操作3-(合并,拆分,插入,删除,建立等)
- 关于链表的建立插入删除
- 单链表的基本操作:建立,求长度,输出,排序,插入,删除,逆置
- 顺序表,链表,静态链表的建立以及插入和删除操作
- 数据结构链表的操作集合(建立,遍历,插入,删除,排序,长度,空判断等)
- 单链表的建立、插入、删除等简单操作
- 单链表建立,插入,删除,查找,遍历操作!!!!
- 单链表的建立(头部延长、尾部延长)、插入操作、删除操作(无头结点的删除、有头结点的删除)
- C++ 数据结构的单链表的建立,插入,删除操作
- 链表的简单操作(建立,输出,插入,删除)