双链表 插入,删除

本文详细介绍了双链表的基本操作,包括在指定位置插入元素和删除指定位置的节点。通过具体的C语言代码实现,深入理解双链表的内部机制和数据结构特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>

typedef struct dnode   //节点类型定义

  char data;          //节点的数据
  struct dnode *prior;//节点的前驱指针
  struct dnode *next;//节点的后继指针
}dlinklist;

//双链表插入
int d_list_insert(dlinklist *head, int i, char data)//在i位置插入data
{
  int j=0;
  dlinklist *p,*s;

  p = head;
 
  while(j < i-1 && q != NULL)
  {
     p = p->next;  
     j++;
  }

  if(j != i)  return -1;
  
  //找到了i的前一个
 p = p->next;  //定到第i个

 s = (dlinklist *)malloc(sizeof(dlinklist));
 s->data = data;

  s->prior = p->prior;//要插入的前置指针等于当前的前置指针
  p->prior->next = s;//当前位置的前趋节点的后置指针等于 新节点的
  
  s->next = p;            //连接新节点的的后继指针到当前位置
  p->prior = s;          //当前位置的前置指针等于新节点

  return 1;
}


//按位置删除 节点
int d_list_deldte(dlinklist *head, int i) //删除第i个
{
  int j=0;
  dlinklist *p;

  p = head;
 
  while(j < i-1 && q != NULL)
  {
     p = p->next;  
     j++;
  }

  if(j != i || i == 0)  return -1;

  p->prior-next = p->next;  
  p->next->prior = p->priro;
    
  return 1;
}

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值