方法一:适用于构建一个单链表
但是不适用空链表和同时构建多个链表,因为EOF是输入流的终止符

#include <iostream>
#include <vector>
struct ListNode{int val;ListNode* next;ListNode(int x) :val(x), next(NULL){}
};ListNode* createList(){cout << "please input numbers (EOF to end):" << endl;int num;vector<int> listnum;while (cin >> num){//将读入的数据放到vector里listnum.push_back(num);}int lens = listnum.size();ListNode* head = new ListNode(listnum[0]);//头结点的值为第一个ListNode* tail = head;//开始时尾结点指向头结点for (int i = 1; i < lens; ++i){ListNode* node = new ListNode(listnum[i]);//循环创建新结点,值为listnum[i]tail->next = node;//尾结点指向这个创建的结点tail = node;//更新尾结点为新创建的结点}return head;
}int main(){ListNode* res = createList();while (res&&res->next){//打印链表cout << res->val << "->";res = res->next;}cout << res->val << endl;;return 0;
}

输出结果:

方法二:适用于构建多个单链表
但是也不适用于空链表,-1作为结束标志,这也是缺陷,这样链表中不能有-1,但是也可以在构建前选择一个不想要的数。

#include <iostream>
#include <vector>
using namespace std;struct ListNode{int val;ListNode* next;ListNode(int x) :val(x), next(NULL){}
};ListNode* createList(){cout << "please input numbers (-1 to end):" << endl;int num;vector<int> listnum;while (cin >> num){//将读入的数据放到vector里if (num == -1){break;}listnum.push_back(num);}int lens = listnum.size();ListNode* head = new ListNode(listnum[0]);//头结点的值为第一个ListNode* tail = head;//开始时尾结点指向头结点for (int i = 1; i < lens; ++i){ListNode* node = new ListNode(listnum[i]);//循环创建新结点,值为listnum[i]tail->next = node;//尾结点指向这个创建的结点tail = node;//更新尾结点为新创建的结点}return head;
}int main(){ListNode *pHead1 = createList();ListNode *pHead2 = createList();cout << "pHead1: ";//打印链表while (pHead1&&pHead1->next){cout << pHead1->val << "->";pHead1 = pHead1->next;}cout << pHead1->val << endl;cout << "pHead2: ";while (pHead2&&pHead2->next){cout << pHead2->val << "->";pHead2 = pHead2->next;}cout << pHead2->val << endl;return 0;
}

输出结果:

C++——构建单链表的方法相关推荐

  1. 7_2判断两个单链表是否相交,若相交,求出第一个交点

    转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...

  2. 线性表的链式表示——单链表

    单链表 定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.每个链表的结点,除存放元素自身的信息之外,还需要存放一个指向其后继结点的指针.即单链表的结构分为两部分, ...

  3. 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表

    http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...

  4. 如何用java写单链表_如何使用Java实现单链表?

    首先构建节点类: package com.fzw.sf; public class Node { private Object data; private Node next; Node(Object ...

  5. 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表

    ​ 线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...

  6. 采用头插法和尾插法建立单链表

    面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...

  7. 单链表的建立(C语言):头插法和尾插法建立单链表

    采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示. 图2-4  头插法建立单链表 头插法建 ...

  8. 大家一起学数据结构之单链表

    最近工作上得一些感触,要想不当码农学好数据结构是必须滴. 好了,话不多说,下面开始第一个内容 单链表 一.先来介绍下单链表得结构吧 大概就这样了,别嫌丑. 单链表有带头结点得和不带头结点得,其中每个节 ...

  9. 线性表的链式存储结构以及单链表的插入和删除原理实现

    线性表的链式存储结构 线性表中的每个元素最多只有一个前驱元素和一个后继元素(其逻辑结构),因此可以采用链式存储结构存储. 链表 线性表的链式存储结构称为链表.在链表中每个结点不仅包含有元素本身的信息( ...

最新文章

  1. Unix环境高级编程(二十一)数据库函数库
  2. 计算机组成原理 华南理工,华南理工2017计算机组成原理随堂练习
  3. ubuntu ip设置
  4. qt在visual studio 2015下的使用
  5. 为什么switch里的case没有break不行
  6. 东风、吉利、比亚迪等车企被工信部点名 因产品不符合标准
  7. docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
  8. python 修改dataframe列名的几种方法
  9. Delphi通过Map文件查找内存地址出错代码所在行
  10. MTK6763平台手机 在国外无法成功注册VOLTE。求解
  11. 2016手机数据恢复软件哪个好?
  12. 做空机构为什么合法,股票做空机构gmt如何达成盈利目标
  13. ESD笔记(一)_ESD基础
  14. 【系统集成项目管理工程师】信息系统集成专业知识
  15. Ubuntu20.04.2.0上veins/subprojects/veins_inet运行出错的问题
  16. SMU 2022Winter(div.2)第三,四周补提
  17. 2023 人工智能在线聊天机器人网页HTML源码
  18. Python:二叉树遍历
  19. 笔记——三维世界坐标和二维画布/屏幕坐标转换
  20. 使用K-邻近算法实现手写数字识别系统

热门文章

  1. iphone字体大小设置_Win10电脑桌面上使用的记事本便签软件字体大小怎么调整?...
  2. OpenGL入门-2-颜色
  3. 机器学习时显卡频率莫明其妙的降低了?
  4. DataSet and DataStream
  5. 基于bootstrap的 按钮-隐藏 案例
  6. [ESC] EnTT 学习记录 1
  7. java sheet_java的poi技术写Excel的Sheet
  8. elementUI多选框组件:多选数组,取值问题
  9. 信恒支付源码-第四方支付源码
  10. 新建android模拟器无法拨号 真机可以拨号,自己想弄个手机拨号器,可是在模拟器上没有反应,能帮帮忙吗?...