#include<cstdio>
#include<cstring>
#include<cstdlib>
typedef struct Node
{
int num;
Node *next,*prev;
}node;
node *head;
void Init()
{
head=(node*)malloc(sizeof(node));
head->next=head;
head->prev=head;
}
void Insert(int num)
{
node *x=(node *)malloc(sizeof(node));
x->num=num;
x->next=head->next;
head->next->prev=x;
head->next=x;
x->prev=head;
}
node *Listsearch(int key)
{
node *cur=head->next;
while(cur!=head&&cur->num!=key)
{
cur=cur->next;
}
return cur;
}
void Deletenode(node *t)
{
if(t==head) return ;
t->prev->next=t->next;
t->next->prev=t->prev;
free(t);
}
void DeleteFirst()
{
Deletenode(head->next);
}
void DeleteLast()
{
Deletenode(head->prev);
}
void deleteKey(int key)
{
Deletenode(Listsearch(key));
}
void printList()
{
node *cur=head->next;
int isf=0;
while(1)
{
if(cur==head) break;
if(isf++>0) printf(" ");
printf("%d",cur->num);
cur=cur->next;
}
printf("\n");
}
int main()
{
int key,n,i;
int cize=0;
char com[20];
int np=0,nd=0;
scanf("%d",&n);
Init();
for(i=0;i<n;i++)
{
scanf("%s%d",com,&key);
if(com[0]=='i') { Insert(key); np++; cize++;}
else if( com[0]=='d')
{
if(strlen(com)>6)
{
if(com[6]=='F') DeleteFirst();
else if( com[6]=='L') DeleteLast();
}
else
{
deleteKey(key);
nd++;
}
cize--;
}
}
printList();
return 0;
}
双向链表
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 题目 首先来看题目,就是实现一个LRU,最近最少使用。 Design and implement a data s...