如何使用c语言实现双向链表的插入删除操作

来源:百度知道  作者:pop0601
摘要:内容提示:关于如何使用c语言实现双向链表的插入删除操作?下面的信息供大家参考:一、数据定义typedef struct duLNodeint data;struct duLNode *prior;struct duLNode *next;d……

问题:实现双向链表删除一个节点P,在节点P后插入一个节点,请写出这两个函数;

参考答案:

//假设线性表的双向链表存储结构
typedef struct DulNode{
  struct DulNode *prior; //前驱指针
  ElemType data;   //数据
  struct DulNode *next; //后继指针
}DulNode,*DuLinkList;

//删除操作
Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e)
{if(!(p=GetElemP_DuL(L,i))) //此处得到i位置的节点指针,如有需要也得写出具体函数实现
  return ERROR;
e=p->data;
p->prior->next=p->next;
p->next->prior=p->pror;
free(p);
return OK;}

//插入操作
Status ListInsert_DuL(DuLinkList &L,int i,ElemType &e)
{if(!(p=GetElemP_DuL(L,i)))
  return ERROR;
if(!(s=(DuLinkList)malloc(sizeof(DuLNode))))
  return ERROR;
s->data=e;
s->prior=p->prior;
p->prior->next=s;
s->next=p;
p->prior=s;
return OK;
}

【相关文章】好搜一下
让你的VC软件界面更漂亮

让你的VC软件界面更漂亮

一、统一风格漂亮界面设计的理论与实现a.窗口和对话框Windows操作系中窗口和…