数据结构——有一个带头结点的单链表,设计算法使其元素递增有序。(只改变指针)

题目:
有一个带头结点的单链表,设计算法使其元素递增有序。

思想:注意断链!!!!

代码展示:

void Sort(LinkList &L)
{
    if(L->next==NULL || L->next->next==NULL)
    {
        return ;
    }
    LinkList p,pre,q;
    p=L->next->next;
    L->next->next=NULL;
    while(p!=NULL)
    {
        q=p->next;// q保存P节点的后继结点指针
        pre=L;// 从有序单链表开始比较,pre指向插入节点的前驱节点
        while(pre->next!=NULL&&pre->next->data<p->data) //在有序单链表中插入p所指节点的前驱节点(pre所指向)
        {
            pre=pre->next;// 在pre所指节点之后插入P所指节点
        }
        p->next=pre->next;
        pre->next=p;//扫描原单链表余下的节点
        p=q;
    }
}
您好!根据您的描述,您需要设计一个带头结点单链表,并实现一个算法来使其元素递增有序。 下面是一个可能的实现方式: ```python # 定义链表节点类 class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next # 定义链表类 class LinkedList: def __init__(self): self.head = ListNode() # 在链表末尾插入元素 def insert(self, val): curr = self.head while curr.next and curr.next.val < val: curr = curr.next new_node = ListNode(val) new_node.next = curr.next curr.next = new_node # 输出链表元素 def __str__(self): curr = self.head.next res = [] while curr: res.append(curr.val) curr = curr.next return "->".join(map(str, res)) ``` 在这个实现中,我们首先定义了一个链表节点类 ListNode,其中包含了节点的值和下一个节点的引用。然后定义了一个链表类 LinkedList,其中包含了头结点,并实现了 insert 方法来将元素插入到链表中。在 insert 方法中,我们首先找到插入位置,并创建一个新的节点,将其插入到链表中。最后,我们还实现了 __str__ 方法,用于输出链表元素。 可以使用以下代码来测试这个实现: ```python # 创建链表 linked_list = LinkedList() # 插入元素 linked_list.insert(3) linked_list.insert(1) linked_list.insert(2) linked_list.insert(5) linked_list.insert(4) # 输出链表 print(linked_list) # 1->2->3->4->5 ``` 希望这个实现能够满足您的需求!
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值