C++——构建单链表的方法
方法一:适用于构建一个单链表
但是不适用空链表和同时构建多个链表,因为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++——构建单链表的方法相关推荐
- 7_2判断两个单链表是否相交,若相交,求出第一个交点
转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4251372.html 声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己 ...
- 线性表的链式表示——单链表
单链表 定义 线性表的链式存储又称单链表,它是指通过一组任意的存储单元来存储线性表中的数据元素.每个链表的结点,除存放元素自身的信息之外,还需要存放一个指向其后继结点的指针.即单链表的结构分为两部分, ...
- 数据结构学习(二)——单链表的操作之头插法和尾插法创建链表
http://blog.csdn.net/abclixu123/article/details/8210109 链表也是线性表的一种,与顺序表不同的是,它在内存中不是连续存放的.在C语言中,链表是通过 ...
- 如何用java写单链表_如何使用Java实现单链表?
首先构建节点类: package com.fzw.sf; public class Node { private Object data; private Node next; Node(Object ...
- 数据结构之线性表----一文看懂顺序表、单链表、双链表、循环链表
线性表是数据结构中比较基础的内容,不过也是入门的所需要客服的第一个难关.因为从这里开始,就需要我们动手编程,这就对很多同学的动手能力提出了挑战.不过这些都是我们需要克服的阵痛,学习新的知识总是痛苦 ...
- 采用头插法和尾插法建立单链表
面说一下如果用C语言建立单链表,分为头插法和尾插法两种. 采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后 ...
- 单链表的建立(C语言):头插法和尾插法建立单链表
采用头插法建立单链表 该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图2-4所示. 图2-4 头插法建立单链表 头插法建 ...
- 大家一起学数据结构之单链表
最近工作上得一些感触,要想不当码农学好数据结构是必须滴. 好了,话不多说,下面开始第一个内容 单链表 一.先来介绍下单链表得结构吧 大概就这样了,别嫌丑. 单链表有带头结点得和不带头结点得,其中每个节 ...
- 线性表的链式存储结构以及单链表的插入和删除原理实现
线性表的链式存储结构 线性表中的每个元素最多只有一个前驱元素和一个后继元素(其逻辑结构),因此可以采用链式存储结构存储. 链表 线性表的链式存储结构称为链表.在链表中每个结点不仅包含有元素本身的信息( ...
最新文章
- Unix环境高级编程(二十一)数据库函数库
- 计算机组成原理 华南理工,华南理工2017计算机组成原理随堂练习
- ubuntu ip设置
- qt在visual studio 2015下的使用
- 为什么switch里的case没有break不行
- 东风、吉利、比亚迪等车企被工信部点名 因产品不符合标准
- docker run -di -p 日志_docker随手笔记第十一节 portainer.io安装使用,比k8s简单
- python 修改dataframe列名的几种方法
- Delphi通过Map文件查找内存地址出错代码所在行
- MTK6763平台手机 在国外无法成功注册VOLTE。求解
- 2016手机数据恢复软件哪个好?
- 做空机构为什么合法,股票做空机构gmt如何达成盈利目标
- ESD笔记(一)_ESD基础
- 【系统集成项目管理工程师】信息系统集成专业知识
- Ubuntu20.04.2.0上veins/subprojects/veins_inet运行出错的问题
- SMU 2022Winter(div.2)第三,四周补提
- 2023 人工智能在线聊天机器人网页HTML源码
- Python:二叉树遍历
- 笔记——三维世界坐标和二维画布/屏幕坐标转换
- 使用K-邻近算法实现手写数字识别系统
热门文章
- iphone字体大小设置_Win10电脑桌面上使用的记事本便签软件字体大小怎么调整?...
- OpenGL入门-2-颜色
- 机器学习时显卡频率莫明其妙的降低了?
- DataSet and DataStream
- 基于bootstrap的 按钮-隐藏 案例
- [ESC] EnTT 学习记录 1
- java sheet_java的poi技术写Excel的Sheet
- elementUI多选框组件:多选数组,取值问题
- 信恒支付源码-第四方支付源码
- 新建android模拟器无法拨号 真机可以拨号,自己想弄个手机拨号器,可是在模拟器上没有反应,能帮帮忙吗?...