c++实现单链表的在指定元素(x)前插入元素(b)的算法 5C

单链表的插入代码如下:
图片说明
单链表打印代码如下:
图片说明
单链表使用代码如下:
图片说明
输出结果如下:
图片说明
以上结果是vs运行时的结果,可是,按照插入算法,或者说,正确的结果应该为20,30,10,40,20.
求解决。

0

2个回答

贴出文本形式的完整的代码,你这么贴怎么帮你调试?

如果你实在连代码都不想提供,那么我刚回答了一个和你类似的,你自己参考下:https://ask.csdn.net/questions/702498

1
qq_41816675
梦_梦呓 这是整个项目:https://pan.baidu.com/s/1Ex-mKH2VZ5SNGKq6vU7Rlw那就麻烦你了
10 个月之前 回复

这不就是头插法吗?假设在p元素前面插入一个q,p的前驱元素为pre,则:q->next = p;pre->next=q; 我可以把我的c语言代码分享给你 如果你需要的话

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
单链表操作之在当前节点前插入一个元素
***单链表操作之在当前节点前插入一个元素*** //在当前结点前插入一个元素,没有给头指针; //定义的结点的结构体和头指针的结构体; typedef int DataType; typedef struct LinkNode { DataType data; struct LinkNode* next; }LinkNode,*pLinkNod
数据结构之单链表在第i个元素之前插入元素的算法
     数据结构之单链表区第i个元素的算法算法思路:  1.声明一个结点p指向第一个结点,初始化j从1开始  2.当j<i时就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1  3.若到链表末尾p为空,则说明第i个元素不存在  4.否则查找成功,在系统中生成一个空结点  5.将数据元素e赋给s->data  6.返回成功     单链表的数据结构:  typedef in...
数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
/*算法2.20*/ #include using namespace  std; struct node                           //创建节点 { int date;          node *next; }; class list                                //创建链表 { int Length;
数据结构示例之链表在指定节点后插入新元素
以下是“链表在指定节点后插入新元素”的简单示例: 1. 用c语言实现的版本 #include #include typedef char datatype; typedef struct node{ datatype data; struct node *next; } listnode; typedef listnode *linklist; listnode
在单链表的第i个位置后插入一个节点(面试题)
/*  思路:            面对这题,我们首先要冷静。             可以先从常规想,既然要插入一个结点,可以把它分成两大类:之前有无节点,如果有,根据判断条件,将其插到符合节点的后面,但你又的思考,插入位置是头部还是中间。             第二大类:就是如果之前没提供节点,那么插入的节点就是这个链表唯一的节点,切记还有一种情况。             ...
在非递减的有序单链表中插入一个值为x的数据元素,并使单链表仍保持有序的操作
// 在非递减的有序单链表中插入一个值为x的数据元素,并使单链表仍保持有序的操作   public void insert(Comparable  x) {       Node p = head.next;       Node q = head;// q用来记录p的前驱结点       //int temp;       Comparable temp;       while (
数据结构--C语言--逆序建立单链表,遍历单链表,在单链表第5个元素前插入一个值为999的元素,删除单链表第5个元素
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define LEN sizeof(struct LNode) struct LNode{ int data; struct LNode *next; }; typedef struct LNode LNode,* LinkList; ...
C语言实现单链表的前后插
#include<stdio.h>#include<stdlib.h>typedef struct List{ int data;    //数据域 struct List *next;         //指针域} List;void HeadCreatList(List *L) //前插法建立链表{ List *s;                //不用像后插法...
实现单链表各种基本运算的方法
#include <stdio.h> #include <malloc.h> #include <stdbool.h> typedef char ElemType; typedef struct LNode {     ElemType data; //数据域     struct LNode *next; //指向后继结点 }LinkNode; // 声明单...
单链表(线性链表)数据元素插入和删除
数据元素的插入:为插入数据元素x,首先要生成一个数据域为x的结点,然后插入在单链表中,根据插入操作的逻辑定义,还需要修改结点a中的指针域,令其指向节点x,而结点x中的指针域应指向结点b,从而实现3个元素a,b和x之间逻辑关系的变化。数据元素的删除:在线性表中删除元素b时,为在单链表中实现元素a,b和c之间逻辑关系的变化,仅需要修改结点a中的指针域即可。下面算法分别为ListInsert和ListDe
在单链表的第i个位置插入一个新结点
在单链表的第i个位置插入一个新结点,首先要判断链表是不是空的,其次要找到链表的第i-1个结点位置,最后还要考虑是不是在第1个位置插入一个数据元素,要注意是不是尾结点后一位插入一个新结点。 实现过程如下所示: package cn.edu.nwu.structs.linklist; /** * @author jcm * *时间 2016年8月23日 */ public class In
在带头节点的单链表中,删除所有值为x的节点(Java实现)
方法一:public void deleteAllx1(int x){ Node p = head.next; Node q = head; while(p != null){ while(p != null && p.e != x){ q = p; p = p.n
单链表的删除---在链表中删除值为x的元素 和 往链表中i位置插入一个数x的操作
单链表的删除:通过图来看思路 p指针用来找链表中数字为x的位置,pre指针始终指向p指针所指向位置的前一个位置 最好自己在纸上模拟一下 代码: #include<bits/stdc++.h> using namespace std; typedef struct Node { int value; struct Node *next; }node,*l...
在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插入的基本操作。将该单链表的所有元素显示出来
题目 在已建好的单链表中的指定位置(i=3)插入一个结点3,实现单链表插入的基本操作。将该单链表的所有元素显示出来 #include<iostream> using namespace std; typedef int ElemType; typedef struct Node{ ElemType data; struct Node *next; }Node; int In...
已知单链表L为按值递增有序的,编写算法将数据元素e插入到顺序表L中,使之仍有序
用单链表实现:已知单链表L为按值递增有序的,编写算法将数据元素e插入到顺序表L中,使之仍有序
数据结构--c语言--在非递减有序的顺序表中插入一个元素x,保持顺序表有序性。
实验目的 熟悉将算法转换成程序代码的过程,了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的C语言描述方法。熟练掌握顺序表的基本操作:查找、插入、删除、合并等,掌握顺序表的随机存取特性。 实验内容 (1)在非递减有序的顺序表中插入一个元素x,保持顺序表有序性               #include<stdio.h> #include<stdlib.h&g...
在无头单链表的一个节点前插入一个节点(不能遍历)
例如 无头链表 A—>B—>C—>D 在节点C前面插入一个节点 思路: 乾坤大挪移 在C的后插入一个节点,可以将C后面新插入的节点Q的值与C的值交换 即可实现C节点之前插入节点的功能 void Listentry(ListNode** phead, LinkNode* pos ,Datatype value) { if(pos==NULL...
在单链表中删除所有元素值为X的元素
#include typedef struct node{ int data; struct  node *next; }list,*nlist; nlist create() { nlist head=(nlist)malloc(sizeof(list)), end;      // new =(nlist)malloc(sizeof(list)) int x=0; if
数据结构之 单链表的基本操作(创建、取值、插入、删除)
单链表的基本操作,创建、取值、插入、删除结点。#include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef struct LNode{ int data; struct LNode* next; }LNode, *Linklist;//-------------------头插法建立单链表------
数据结构与算法-有序单链表的插入
//单链表基本操作 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; typedef int datatype; typedef struct node{ datatype data; struct node *next; }Lnode,*linklist; /******************************************/...
单链表插入指定位置元素
#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;time.h&amp;gt; typedef struct Node { int num; struct Node *next; }Node; void print(Node L) //输出全部链表元素 { Node* p=L.next; while (p!=N...
在无头单链表的一个非头节点前插入一个节点
思路: 由于单链表的单向性,所以我们现在这个非头结点的后面插入一个节点,然后在交换这两个节点就可以了。头文件:链表定义#include<stdio.h> #include<assert.h> #include<stdlib.h> typedef int DataType; typedef struct strNode { struct strNode* pNext;
建立一个单链表
建立一个单链表,在单链表上实现插入、删除和查找等操作,有菜单。 ⑴初始化字符型单链表H; ⑵采用尾插法建立单链表H,如(a,b,c,d,c); ⑶输出单链表H的长度; ⑷输出单链表H的第i个元素,如输出单链表H的第3个元素; ⑸输出给定元素的位置,如输出元素a的位置; ⑹在第i个元素前插入给定元素,如在第4个元素前插入元素f; ⑺删除单链表H的第i个元素,如删除单链表H的第3个元素。 ⑻输出单链表
数据结构与算法基础(二)之单链表的插入与删除操作
今天主要来讲一讲单链表的插入与删除操作的步骤和算法解释。这是单链表最基本的操作但是也是最重要的基础之一,有些地方还比较容易出错。下面我就结合源代码在上面加上注释来解释每一步的作用。 **一、单链表的插入操作** 1、图示(截图来自网易云课堂鱼C工作室《数据结构和算法》课程视频) 2、 要想将结点s插入到ai与ai+1之间,不需要移动数据元素,只需要在ai与ai+1之间插入一个新的结点,
删除单链表指定位置的元素
#include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;time.h&amp;gt; typedef struct Node { int num; struct Node *next; }Node; void print(Node L) //输出全部链表元素 { Node* p=L.next; while (p!=N...
数据结构 - 2顺序表及链表基本运算实现
实验目的 深入掌握线性表的两种存储方法,即顺序表和链表。体会这两种存储结构之间的差异。 实验内容 1. 编写一个程序exp2-1.cpp,实现顺序表的各种运算(假设顺序表的元素类型为char) 并在此基础上完成如下功能: (1)初始化顺序表L; (2)采用尾插法依次插入元素a,b,c,d,e; (3)输出顺序表L; (4)输出顺序表L的长度; (5)判断顺序表L是否为空;
使带头节点的单链表元素递增有序
#include &quot;stdafx.h&quot; #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;malloc.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; typedef int type; typedef struct lnode //定义链表结点的数据结构 { int data; struct lnode *next; }Lnode; ty...
单链表上查找算法的实现 swustoj
单链表上查找算法的实现 1000(ms) 65535(kb) 2713 / 7242建立一个长度为n的带头结点的单链表,在该表中寻找第i个结点,若找到,则输出ok,否则输出error。处理数据类型为整型。输入第一行为链表的长度n; 第二行为链表中的数据元素; 第三行为要找的结点i。输出找到就输出ok,没找到就输出error。样例输入10 1 2 3 4 5 6 7 8 9 10 5 样例输出ok...
链表 (已排好序 插入一个元素仍有序)
#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; typedef struct node { int date; struct node *next; }lnode; void creatlist(lnode *h,int n)//尾插法创建链表 { lnode *p,*r; int i,x; r=h; ...
设A和B是两个单链表,其表中元素递增有序,使用一算法将A和B归并成一个案元素递减有序的单链表C(该程序中的功能包含了上几个博客中的部分功能)
//头文件 #ifndef LIST_H #define LIST_H #include #include using namespace std; template class LinkNode{ public: T data; LinkNode* link; LinkNode() { } LinkNode(const T& item,LinkNo
数据结构示例之单链表删除元素
以下是”链表删除元素“的简单示例: 1. 用c语言实现的版本 #include #include typedef char datatype; typedef struct node{ datatype data; struct node *next; } listnode; typedef listnode *linklist; listnode *p; /*
递归删除链表中的指定元素x
/* 问题描述:递归删除链表中的x 说明:此处要注意的是,在递归删除x的时候,中间并没有产生断链。因为函数传递的是引用。 关于引用,这次又详细的查了一下。特说明如下:其实引用,在教材上被解释成别名。就是给变量另起一个名字。从本质上说,其实并没有引用这回事,引用的内部实现过程还是利用指针来实现的。 比如说:int i; int &j = i; 然后我们就可以说j
单链表的插入操作的实现
建立长度为n的单链表,在第i个结点之前插入数据元素data。输入第一行为自然数n,表示链式线性表的长度; 第二行为n个自然数表示链式线性表各元素值; 第三行为指定插入的位置i;第四行为待插入数据元素data。 输出指定插入位置合法时候,输出插入元素后的链式线性表的所有元素,元素之间用一个空格隔开。输入不合法,输出&quot;error!&quot;。样例输入5 1 2 3 4 5 3 6样例输出1 2 6 3 4 5...
单链表的操作前插法建立链表 插入结点 查找结点 删除结点
1)用前插法建立带表头结点的单链表 2)在该链表中统计数据值为x的结点个数。 3)在该链表中值为k的结点前插入y结点,并删除k结点, 如果没有值为k的结点则把y结点插在表尾。
数据结构第五版第二章实验2.实现单链表的各种基本运算
编写一个程序exp2-2.cpp,实现单链表的各种基本运算(假设单链表的元素类型为char)并在此基础上完成如下功能:(1)初始化单链表h; (2)采用尾插法依次插入元素a,b,c,d,e; (3)输出单链表h; (4)输出单链表h长度; (5)判断单链表h是否为空; (6)输出单链表h的第3个元素; (7)输出元素a的位置; (8)在第4个元素位置上插入元素f; (
编写算法删除单链表L中所有值为e的数据元素。
编写算法删除单链表L中所有值为e的数据元素。
单链表的创建、初始化、插入、删除 、输出、求表长、清空、查找操作
//单链表的创建、初始化、插入、删除 、输出、求表长、清空、查找操作 #include #include #include #define N 5 #define ERROR 0 #define OK 1 typedef struct node{ //定义节点 int data; struct node *next; }linklist; linklist *Initlist()
【c++程序】链表前插、插入和后插
#include using namespace std; typedef int T; struct Node { T data; Node* next; //d=T()零初始化,建个匿名对象不传参数 Node(const T& d=T()):data(d),next(0){} }; class list { Node* head;//头指针,用来保存头节点的地址 int len
在链表中删除所有x元素的结点的递归实现和非递归实现
//用递归删除值为x的节点 void Del_X_3(LinkList &amp;amp;L,ElemType x) { NODE *p;//p指向待删除的节点 if(L==NULL) { return; } if(L-&amp;gt;data == x) { p = L; L=L-&amp;gt;next; ...
线性链表尾插法及查找第i位的值 (完整代码)
单链表的创建(尾插法):首先创建一个头指针,在创建一个循环进行赋值,链接。void creat(linklist &amp;amp;l) 查找链表第i位的值:将第i个元素赋值给e,若不存在第i个元素返回-1。 status getelem_l(linklist l,int i,elemtype &amp;amp;e)  代码实现: //创建单链表及查找第i位的值 #include &amp;lt;stdio.h...