c++-[C++] 单链表插入问题

问题描述

[C++] 单链表插入问题
  • 设计接口函数int ListInsert_order (Node *H , DataType item);
  • 向递增有序的单链表H中插入新的元素item,插入后单链表仍然有序。
  • 请回答者附带注释,谢谢

解决方案

http://bbs.bccn.net/thread-444605-1-1.html

解决方案二:

你这有点太投机取巧了.如果由需要,可以看一下我的博客,里面有单链表的相关问题,而且有代码分析.

解决方案三:

这就是插入排序的插入算法
会链表插入排序就一定可以做到
不会,可以参考数组的插入排序

解决方案四:

单链表不是数组,不能像数组那样二分跳着找,

只能用指针一个一个往后找,找到一个比item大的插到前面去。

算法上不能优化了,就是O(n)时间遍历链表。

如果说参考 同的代码,只能是实现上的一点差别了。

这么基础的问题,你这是刚学数据结构么。。等学到树就很多很多算法了。。

时间: 2024-12-03 10:36:03

c++-[C++] 单链表插入问题的相关文章

[求助]单链表插入出现内存不能读取的问题

问题描述 [求助]单链表插入出现内存不能读取的问题 这个程序就是对一个有序单链表进行插入操作,代码如下:有问题的地方我已经标记出来: #include #include #include typedef int datatype; typedef struct node { datatype data; struct node *next; }linklist; linklist *CreatlistF() { int ch=0; linklist *head,*s,*r; head=(link

指针-C语言单链表的插入求解了

问题描述 C语言单链表的插入求解了 对于带有头结点的链表,为什么在插入方法需要传入头指针的地址(二重指针)?对于不带头结点的链表,插入或者删除第一个元素时,需要使用头指针的地址,可是对于带头结点链表,为何要呢? 解决方案 解决方案二: C语言不像C++,没有引用参数,所以参数的形参被改变不能作用到实参上. 比如 void foo(int i) { i = 2; } int i = 1; foo(i); // i还是1 为此,需要指针: void foo(int* i) { *i = 2; } i

数据结构模版----单链表实现方式总结

数据结构模版----单链表实现方式总结 前面我们提供了四种方式实现的单链表,有带头结点的不带头结点的,而单链表的结构体定义也有两种方式,那么这些实现方式,到底有什么区别呢,为什么会出现这么多种实现方式呢,下面我们就来细细体会 一 单链表结构体的实现区别 首先我们对比一下,单链表结构体 不同方式的单链表实现时,链表结点的实现是相同的,不同之处在于单链表结构体的实现上 单链表结构体的实现 [cpp] view plain copy print? typedef int ElemType;      

数据结构的C++实现之线性表之链式存储结构以及单链表反转

为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据ai,除了存储其自身的信息之外,还需存储一 个指示其直接后继的信息(即直接后继的存储位置).这两部分信息组成数据元素ai的存储映像,称为结点(Node).N个 结点链结成一个链表,即为线性表(a1,a2,...,an)的链式存储结构,因为此链表的每个节点中只包含一个指针域,所以叫 做单链表. 我们把链表中的第一个结点的存储位置叫做头指针,,为了更方便地对链表进行操作,如删除第一个结 点的特殊情况(第一个结点没有前驱,而要摘除一

C#实现单链表(线性表)完整实例_C#教程

本文实例讲述了C#实现单链表(线性表)的方法.分享给大家供大家参考,具体如下: 顺序表由连续内存构成,链表则不同.顺序表的优势在于查找,链表的优势在于插入元素等操作.顺序表的例子:http://www.jb51.net/article/87605.htm 要注意的是,单链表的Add()方法最好不要频繁调用,尤其是链表长度较长的时候,因为每次Add,都会从头节点到尾节点进行遍历,这个缺点的优化方法是将节点添加到头部,但顺序是颠倒的. 所以,在下面的例子中,执行Purge(清洗重复元素)的时候,没有

3.8.2单链表的删除

        现在我们再来看单链表的删除.设存储元素ai的结点为q,要实现将结点q删除单链表的操作,其实就是将它的前继结点的指针绕过,指向它的后继结点即可(如图3-8-5所示).         我们所要做的,只是实际上就是一步,p->next=p->next->next,用q来取代p->next,即是 q=p->next; p->next=q->next;         解读这两句代码,也就是说让p的后继的后继结点改成p的后继结点.有点拗口呀,那我再打个形象

关于单链表的删除算法

问题描述 关于单链表的删除算法 typedef int ElemType; typedef struct Node //结点结构 { ElemType data; struct Node *next; }Node; typedef struct Node *LinkList; Status ListDelete(LinkList *L,int i,ElemType *e) //单链表删除 { int j; LinkList p,q; p = *L; j = 1; while (p->next &am

数据结构C#版笔记--单链表(LinkList)

上一篇学习了"顺序表(SeqList)",这一篇来看下"单链表(LinkList)".在上一篇的最后,我们指出了:顺序表要求开辟一组连续的内存空间,而且插入/删除元素时,为了保证元素的顺序性,必须对后面的元素进行移动.如果你的应用中需要频繁对元素进行插入/删除,那么开销会很大.   而链表结构正好相反,先来看下结构: 每个元素至少具有二个属性:data和next.data用来存放数据,而next用来指出它后面的元素是谁(有点"指针"的意思). 链

C++ 单链表的基本操作(详解)_C 语言

链表一直是面试的高频题,今天先总结一下单链表的使用,下节再总结双向链表的.本文主要有单链表的创建.插入.删除节点等. 1.概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素. 链表中的数据是以结点来表示的,每个结点的构成:元素 + 指针,元素就是存储数据的存储单元,指针就是连接每个结点的地址数据.如下图: 2.链表的基本操作 SingleList.cpp: #include "stdafx.h" #include "SingleList.h&