双向链表是在单链表的基础上添加了前驱指针域。
其中,双向链表的插入以及反置是最常见的操作,也是程序员面试过程经常遇到的。
下面是我实现的过程,有其他好的想法请不吝赐教。
1 链表反置:
int inverseList(DulNode *L)
{
DulNode *p=L;
DulNode *s=L->next;
int temp;
while(p->next)
{
p=p->next;
}
printf("p->data= %d\n",p->data);
while(s!=p&&p->next!=s)
{
temp=s->data;
s->data=p->data;
p->data=temp;
s=s->next;
p=p->prior;
}
return 0;
}
2 链表插入:
//insert a new DulNode
int insertList(DulNode *L,int i,elemType e)
{
DulNode *p=L->next;
DulNode *s;
int n=1;
for(n=1;n
next;
}
if(!p)
return ERROR;
s=(DulNode *)malloc(sizeof(DulNode));
s->data=e;
s->next=p->next;
s->prior=p;
p->next=s;
p->next->prior=s;
return OK;
}