单链表的插入与删除

来源:互联网 发布:网络主播涉黄 编辑:程序博客网 时间:2024/05/21 03:24

单链表的插入

s->next=p->next;

p->next=s;

让p的后继结点改成s的后继结点,再把结点s变成p的后继结点。

注意:两句话的顺序不能交换。如果交换,则使得p->next给覆盖成s的地址。

/*初始条件:顺序线性表L已存在*//*操作结果:在L中第i个结点位置之前插入新的数据元素e,L的长度加1*/Status ListInsert(LinkList *L,int i,ElemType e){int j;LinkList p,s;p=*L;   /*p指向链表表头*/j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i){return ERROR;/*第i个结点不存在*/}s=(LinkList)malloc(sizeof(Node));/*生成新节点(stdlib.h)*/s->data=e;s->next=p->next;p->next=s;/*让p的后继结点改成s的后继结点,再把结点s变成p的后继结点*/return OK;} 

单链表的删除

将要删除结点q的前继结点指针绕过,指向它的后继结点。

q=p->next;

p->next=q->next;

/*初始条件:顺序线性表L已存在*//*操作结果:在L中删除第i个结点,用e返回其值,L的长度减1*/Status ListInsert(LinkList *L,int i,ElemType e){int j;LinkList p,q;p=*L;   /*p指向链表表头*/j=1;while(p&&j<i){p=p->next;++j;}if(!p||j>i){return ERROR;/*第i个结点不存在*/}q=p->next;p->next=q->next;/*将要删除结点q的前继结点指针绕过,指向它的后继结点*/ *e=q->data;free(q);/*让系统回收此结点,释放内存*/return OK;} 


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 网上买的手机没发票怎么办 手机店花呗分期额度不够怎么办 买了手机没有开票怎么办 在京东上买苹果手机没有发票怎么办 买到苹果演示机怎么办 京东白条借不了怎么办 买了东西不给退怎么办 邮政储蓄银行买东西多扣钱了怎么办 快递送错地方了怎么办 菜鸟驿站超过5天怎么办 消费者买到不合格产品怎么办 如果买到不合格的产品怎么办 买到不合格的种子怎么办 买到不合格的空调怎么办 买到不合格的家具怎么办 灭火器买到不合格产品怎么办 路边买到假手机怎么办 网上买的手机屏幕碎了怎么办 天猫订单删除了怎么办 华为入职预约满怎么办 三星c5玩王者荣耀卡怎么办 三星s8背部碎了怎么办 保修期内发动机坏了怎么办 6s主板进水了怎么办 新买的狗晚上叫怎么办 官网手机坏了怎么办 小米商城买手机不发货怎么办 小米商城分期额度不够怎么办 京东买家未退款怎么办 京东自营不退款怎么办 苏宁易购的无门槛15元怎么办 小米5shome键失灵怎么办 苹果电量用的快怎么办 苹果5s掉电快怎么办 小米5s返回键失灵怎么办 苹果5s漏电是怎么办 苹果6s手机漏电怎么办 5s返回键失灵怎么办 苹果5s返回键失灵怎么办 小米5返回键失灵怎么办 小米手机返回键失灵怎么办