首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

写了一段代码,运作不正确,要求:如果双链表的结点数据和给定的数据相同,就将该链表的相同结点全部删除

2013-01-23 
写了一段代码,运行不正确,要求:如果双链表的结点数据和给定的数据相同,就将该链表的相同结点全部删除。//双

写了一段代码,运行不正确,要求:如果双链表的结点数据和给定的数据相同,就将该链表的相同结点全部删除。
//双链表结点定义
typedef struct DuLNode{
ElemType data;
struct DuLNode *prior,*next;
}DuLNode,*DuLinkList;



//删除双链表中数据为deelem的结点,la为双链表的表尾
DuLinkList Delete(DuLinkList la,ElemType deelem)
{
DuLinkList p,tail;
p=la;
tail=la;
if(deelem==p->data)
{
p->prior->next=NULL;
tail=p->prior;
return tail;
}
p=p->prior;
while(p!=NULL)
{
if(deelem==p->data)
{
p->next->prior=p->prior;
p->prior->next=p->next;
}
p=p->prior;
}
return tail;
}

[解决办法]
给个参考:

DuLinkList Delete(DuLinkList la,ElemType deelem)
{
DuLinkList p,ta;
p=la;
ta=la;

while(p!=NULL)
{
if(deelem==p->data)
{
if(p->prior!=NULL)//非头结点
p->prior->next=p->next;
else//删除头结点,ta也要后移
ta=p->next;
if(p->next!=NULL)//非尾结点
p->next->prior=p->prior;
}
p=p->next;
}
return ta;
}

热点排行
Bad Request.