/**Copyright(c)2014,烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者:满星辰*完成日期:2014年 2月 4日*版本号:v1.0*问题描述:编写函数void insert(int x),将值为x的结点插入到由make_list3建立起来的有序链表中。*输入描述:链结的数据*程序输出:*/
#include  <iostream>
using namespace std;
struct Node
{int data;            //结点的数据struct Node *next;  //指向下一结点
};
Node *head=NULL;    //将链表头定义为全局变量,以便于后面操作
void make_list3();  //建立升序链表
void out_list();    //输出链表
void insert(int x); //将值为x的结点插入到由make_list3建立起来的有序链表中
int main( )
{int x;make_list3();out_list();cout<<"请输入要插入的正整数x:";cin>>x;insert(x);out_list();return 0;
}
void make_list3()
{int n;Node *p,*x,*y;cout<<"输入若干正数(以0或一个负数结束)建立链表:";cin>>n;while(n>0){p=new Node;p->data=n;p->next=NULL;if(head==NULL){head=p;}else{if(n<=head->data){p->next=head;head=p;}else{x=head;y=x->next;while(y!=NULL&&n>y->data){x=y;y=x->next;}if(y==NULL){x->next=p;}else{p->next=y;x->next=p;}}}cin>>n;}return;
}
void out_list()
{Node *p=head;cout<<"链表中的数据为:"<<endl;if(p==NULL)cout<<"空链表!";while(p!=NULL){cout<<p->data<<" ";p=p->next;}cout<<endl;return;
}
void insert(int x)
{Node *p,*m,*n;p->data=x;if(x<head->data){p->next=head;head=p;}else{m=head;n=m->next;while((n!=NULL)&&(x>n->data)){m=n;n=n->next;}if(n==NULL){m->next=p;}else{p->next=n;m->next=p;}}return;
}

示例图片:

学习心得:

如果只是执行“插入”这个动词,在这方面链表比数组可要简单多了,不用循环什么的,直接把前一个的 next 赋值为 要插入的这一个,再把这一个的 next  赋值为 后一个。

So easy~\(≧▽≦)/~可是还要考虑各种情况,特殊的就第一个和最后一个。。。

想起来漏洞在哪就加上去,最后成果简直不忍直视,So,偷偷参考一下别人的~~嗯嗯,现在是我的了

寒假自主学习项目一 - 链表(6、插入节点)相关推荐

  1. c语言在尾部添加新节点,在单链表最后插入节点

    要在单链表的最后插入节点,需要提及以下两种情况. 新节点添加到空链表中 新节点添加到链表的末尾 1. 新节点添加到空链表中 如果满足条件(head == NULL). 因此,只需要在C语言中使用mal ...

  2. 双链表中插入节点(C语言实现)

    文章目录 1. 相关背景介绍 1.1 双链表概念 1.2 双链表的优势与劣势 1.3 双链表插入节点的位置 2. 不同位置插入数据 2.1 在DLL的前端添加节点 2.2 在给定节点之前添加节点 2. ...

  3. 双链表(插入节点操作)

    在双链表L中第i个位置插入值域为e的结点. 双链表的存储结构定义: typedef struct DLinkList{int data;DLinkList * prior;DLinkList * ne ...

  4. c语言链表之链表后面插入节点

    加入此时我们有 1,2,3,4,5 五个节点,需要在2节点和3节点之间插入一个节点,新节点是 100. 思路是: 先让 100->next = 2->next; 然后 2->next ...

  5. 单链表的算法之尾部插入节点

    单链表的算法之插入节点 1.访问链表中各个自己的指针 (1)只能用头指针,不能用各个节点自己的指针.因为实际中我们保存链表不会保存各个节点的指针,只能通过头指针来访问链表节点. (2)前一个节点内部的 ...

  6. c语言链表增加新节点,C语言 链表的创建,以及节点的增加和删除

    第一次写博客,如有错误还请指正---- 今天下午倒腾了一下的链表,感觉链表就是一个小型的,用于简单的小程序的用户信息存储和管理还是很方便的. 下面为方便起见,以学生信息为例: 链表采用了动态分配的办法 ...

  7. 链表问题18——向有序的环形单链表中插入新节点

    题目 一个环形链表从头节点开始的顺序为不降序的顺序,也就是如1->2->2->2->3->4这样的链表叫做不降序,同时由最后的节点指回头节点.给定这个环形单链表的头节点h ...

  8. 【 C 】在单链表中插入一个新节点的尝试(二)

    在上篇博文中:[ C ]在单链表中插入一个新节点的尝试(一),我们最后提到了如果向单链表的开头(起始位置)插入一个节点,上篇博文中给出的程序显然完成不了这任务. 这篇博文中,我们将解决这个问题,给出一 ...

  9. 【 C 】在单链表中插入一个新节点的尝试(一)

    根据<C和指针>中讲解链表的知识,记录最终写一个在单链表中插入一个新节点的函数的过程,这个分析过程十分的有趣,准备了两篇博文,用于记录这个过程. 链表是以结构体和指针为基础的,所以结构体和 ...

最新文章

  1. C++ string字符串的比较是否相等
  2. 面试官:你说你精通 Docker,那你来详细说说 Dockerfile 吧
  3. confluence 编辑器这次没有加载_代码编辑器横评:为什么 VS Code 能拔得头筹
  4. 新近爆出的runC容器逃逸漏洞,用户如何面对?
  5. 网络名称空间 实例研究 veth处于不同网络的路由问题
  6. 计算机组成原理第一阶段测试,计算机组成原理随堂测验1附答案
  7. ecshop 广告设置
  8. 拷贝带隐藏目录的所有文件 到另外一个目录指令
  9. SQL server 查询语句
  10. 什么是SQL Server日志传送?
  11. 对WinForm的App.config文件进行加密
  12. java代码颜色_JAVA颜色代码
  13. 【裴礼文数学分析】例1.1.2
  14. el-select默认选中第一个,设置默认值
  15. 二叉树基于递归模板的算法题目(王道算法题)
  16. [闲聊篇]这个世界所谓的28定律
  17. 好文摘记——施一公教授:如何提高专业英语阅读水平
  18. Android Camera HAL3 - MultiCamera-HALBufferManager
  19. DDIM代码详细解读(3):核心采样代码、超分辨率重建
  20. Tech Talk 活动预告 | 基于Amazon KVS打造智能视觉产品

热门文章

  1. 洛谷题单 算法1-3 暴力枚举
  2. 带bitlocker解密的pe_Win10使用BitLocker加密U盘|Win10自带BitLocker加密U盘
  3. javaftp读取服务器文件,java读取ftp服务器文件
  4. 聚焦科技创新产业升级 中国联通和腾讯签署新战略合作协议
  5. 腾讯云网站备案授权码是什么及如何使用?
  6. c#设计模式(3)—— 利用观察者模式模拟推送消息
  7. 利用 Github Pages 和 Hugo 快速搭建免费的个人网站
  8. [APIO2015] T1巴厘岛的雕塑
  9. STM32蓝牙控制循迹避障小车源代码——4.蓝牙控制
  10. 【RMAN】RMAN跨版本恢复(中)