单链表-插入一个元素为x的节点后,使链表仍然有序

单链表的存储结构:

typedef struct LinkList{
        int data;
        LinkList * next;
    }

分析:
这里和顺序表那题题意是一样的,都是插入一个元素节点x后,使链表仍然有序。
那这两者有啥区别吗?

存储结构不一样。

顺序表是顺序存储结构,单链表是链表存储结构。

二者区别:
1.顺序表是先找到插入位置,然后将后面元素全体后移,让它插入。
2.而这里单链表,通过判断数据域,找到该位置,不需要移动大量元素,直接插入即可,比顺序表更方便。

思路:
1.已知一个数据域,那么把它的整个结点生成完整。并定义两个指针pre,p
2.通过while循环,判断p->data < x.,如果没找到,两个指针同步后移。
3.找到了,则将生成的结点插入即可。

C代码实现:

void  inorderList(LinkList *&L,int x){
        LinkList *pre = L,*P = pre->next,*s;
        s = (LinkList *)malloc(sizeof(LinkList));
        s->data = x;  s->next = null;
        while(p!=null && p->data < x){
            pre = p;
            p=p->next;
        }
        s->next = pre->next;  //插入节点
        pre->next = s;
    }
  • 13
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值