#include<stdio.h>
#include<malloc.h>
#define size sizeof(struct link)
#define null 0
typedef struct link
{
int data;
struct link *pre;
struct link *next;
}link;
link *p = null;
link *current = null;
void moveNext()
{
if (current == null)
{
return;
}else{
current = current->next;
}
}
void movePre()
{
if (current == null)
{
return;
}else{
current = current->pre;
}
}
void delNext()
{
if (current == null)
{
return;
}
else if (current->next == current)
{
p = current;
current = null;
p->next = null;
p->pre = null;
}
else
{
p = current->next;
current->next = p->next;
p->next->pre = current;
p->next = null;
p->pre = null;
}
}
void delPre()
{
if (current == null)
{
return;
}
else if (current->next == current)
{
p = current;
current = null;
p->next = null;
p->pre = null;
}
else
{
p = current->pre;
current->pre = p->pre;
p->pre->next = current;
p->next = null;
p->pre = null;
}
}
void addNext()
{
int temp;
scanf(" %d",&temp);
p = (link*)malloc(size);
p->data = temp;
if(current == null)
{
current = p;
current->next = p;
current->pre = p;
}
else
{
p->next = current->next;
current->next->pre = p;
current->next = p;
p->pre = current;
}
}
void addPre()
{
int temp;
scanf(" %d",&temp);
p = (link*)malloc(size);
p->data = temp;
if(current == null)
{
current = p;
current->next = p;
current->pre = p;
}
else
{
p->pre = current->pre;
current->pre->next = p;
p->next = current;
current->pre = p;
}
}
void display()
{
p = current;
if (current == null)
{
return;
}else{
while(p->next != current){
printf("%d ", p->data);
p = p->next;
}
printf("%d", p->data);
printf("\n");
}
}
int main()
{
int num,i,input,fPos,steps,option;
scanf("%d",&num);
for(i=0;i<num;i++)
{
scanf("%d",&input);
p = (link*)malloc(size);
p->data = input;
if(current == null)
{
current = p;
current->next = p;
current->pre = p;
}
else
{
p->next = current->next;
current->next->pre = p;
current->next = p;
p->pre = current;
current = p;
}
}
scanf("%d",&fPos);
while(fPos--)
{
moveNext();
}
scanf("%d",&steps);
while(steps--)
{
scanf("%d",&option);
switch(option)
{
case 1:moveNext();break;
case 2:movePre();break;
case 3:delNext();break;
case 4:delPre();break;
case 5:addNext();break;
case 6:addPre();break;
}
}
display();
}
双向循环链表
最新推荐文章于 2023-05-01 21:33:23 发布