好学IT学院:IT信息技术分享交流平台
标签:C++  来源:百度知道  作者:pop0601  发布时间:2006-11-15  ★★★加入收藏〗〖手机版
摘要:内容提示:关于如何使用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软件界面更漂亮
  一、统一风格漂亮界面设计的理论与实现a.窗口和对话框Windows操作系中窗口和对话框在我们看来是一样的,就是一个四边形,有标题栏…
  • 好学考试H5触屏版开放内测
  • 好学触屏公众号虎力全开、杨帆起航!