算法提高 盾神与条状项链
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
struct node* left;
long num;
struct node* right;
}Anode;
int main()
{
long n,m;
long i,j,t;
char st[4]={'\0'};
Anode *head,*p,*q;
head=malloc(sizeof(Anode));
p=malloc(sizeof(Anode));
head->left=NULL;
head->num=0;
head->right=p;
p->left=head;
q=p;
scanf("%ld%ld",&n,&m);
for(i=0;i<n;i++)
{
scanf("%ld",&j);
p->num=j;
p=malloc(sizeof(Anode));
q->right=p;
p->left=q;
q=p;
p->num=0;
p->right=NULL;
}
for(i=0;i<m;i++)
{
p=head->right;
scanf("%s %ld",st,&j);
if(st[0]=='D')
{
while(p->num!=0)
{
if(p->num==j)
{
q=p;
p->left->right=p->right;
p->right->left=p->left;
free(q);
break;
}
else
{
p=p->right;
}
}
}
else
{
scanf("%ld",&t);
while(p->num!=j && p->num!=0)
{
p=p->right;
}
q=malloc(sizeof(Anode));
q->left=p->left;
q->num=t;
q->right=p;
p->left->right=q;
p->left=q;
}
}
p=head->right;
i=0;
while(p->num!=0)
{
i++;
p=p->right;
}
printf("%ld\n",i);
p=head->right;
while(p->num!=0)
{
printf("%ld ",p->num);
p=p->right;
}
return 0;
}