7-3 在有序链表中插入数据 (25 分)

本博客探讨如何在已排序的链表中插入一个数值x,确保插入后链表依然保持升序排列。通过实例展示输入和输出格式,并提供相关代码限制和时间、内存约束。
摘要由CSDN通过智能技术生成

给定一批严格递增排列的整型数据,给定一个x,若x不存在,则插入x,要求插入后保持有序。存在则无需任何操作。

输入格式:
输入有两行: 第一个数是n值,表示链表中有n个数据。后面有n个数,分别代表n个数据。 第二行是要插入的数。

输出格式:
输出插入后的链表数据,以空格分开。行末不能有多余的空格。

输入样例1:
在这里给出一组输入。例如:

5 1 3 6 9 11
4
结尾无空行
输出样例1:
在这里给出相应的输出。例如:

1 3 4 6 9 11
结尾无空行
输入样例2:
在这里给出一组输入。例如:

5 1 3 6 9 11
3
结尾无空行
输出样例2:
在这里给出相应的输出。例如:

1 3 6 9 11
结尾无空行
作者
陈晓梅
单位
广东外语外贸大学
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

#include <stdio.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
   
    int i=1,num[1000],insert,count=0,j;
    while(1){
   
    	scanf("%d",
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有序链表插入数据需要保证插入后依然保持有序。具体步骤如下: 1. 创建一个新节点,将要插入数据存储在该节点。 2. 如果链表为空,则将新节点设置为头节点。 3. 如果链表不为空,则从头节点开始遍历链表,直到找到第一个大于等于插入数据的节点。记住该节点的前一个节点。 4. 将新节点插入到该节点的前面,即将前一个节点的 next 指针指向新节点,将新节点的 next 指针指向当前节点。 5. 如果遍历到链表末尾仍未找到大于等于插入数据的节点,则将新节点插入链表末尾。 以下是一个示例代码: ```python class Node: def __init__(self, data=None): self.data = data self.next = None class SortedLinkedList: def __init__(self): self.head = None def insert(self, data): new_node = Node(data) if self.head is None: # 如果链表为空,则将新节点设置为头节点 self.head = new_node elif self.head.data >= data: # 如果新节点的值比头节点小或相等,则将新节点插入到头节点前面 new_node.next = self.head self.head = new_node else: # 从头节点开始遍历链表,直到找到第一个大于等于插入数据的节点 current = self.head while current.next is not None and current.next.data < data: current = current.next # 将新节点插入到该节点的前面 new_node.next = current.next current.next = new_node def display(self): current = self.head while current is not None: print(current.data, end=' ') current = current.next print() ``` 可以使用以下代码测试: ```python linked_list = SortedLinkedList() linked_list.insert(3) linked_list.insert(2) linked_list.insert(5) linked_list.insert(4) linked_list.display() # 输出:2 3 4 5 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值