尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

《数据结构实验指导-C++语言版》 求单链表list中的元素个数,即表长

《数据结构实验指导-C++语言版》 求单链表list中的元素个数,即表长 题目描述请编写程序将nnn个整数顺次插入一个初始为空的单链表的表头。最后输出单链表的表长。本题旨在训练学习者熟悉单链表的基本操作不建议直接输出nnn。输入格式输入首先在第一行给出非负整数nnn≤15\le 15≤15随后一行给出nnn个 int 范围内的整数数字间以空格分隔。输出格式在一行中输出单链表的表长。输入样例5 1 2 3 4 5输出样例5解题思路本题训练单链表的基本操作头插法建表 遍历求表长。定义结点结构Node包含数据域data和指针域next构造函数把next初始化为空。头插法每读入一个整数新建结点p让p-next指向当前表头head再更新head p新结点总是插在表头前面。求表长从head出发用指针p沿next遍历整条链表每经过一个结点计数加 1直到p为空。时间复杂度O(n)O(n)O(n)建表O(n)O(n)O(n) 计数O(n)O(n)O(n)空间复杂度O(n)O(n)O(n)链表结点。代码流程说明定义链表结点结构Node数据域 指针域 构造函数。读入nnn表头指针head初始化为空。循环nnn次读入整数vvv新建结点p用头插法把p插入链表头部。从head开始遍历链表统计结点个数cnt。输出cnt并换行。代码实现#includeiostreamusingnamespacestd;structNode{intdata;Node*next;Node(intd):data(d),next(nullptr){}};intmain(){intn;cinn;Node*headnullptr;for(intk0;kn;k){intv;cinv;Node*pnewNode(v);p-nexthead;headp;}intcnt0;for(Node*phead;p;pp-next)cnt;coutcntendl;return0;}代码流程图是否是否开始读入 n表头 head 初始化为空k 从 0 到 n-1读入整数 v新建结点 pp 的 next 指向 headhead 指向 pk 加 1cnt 初始化为 0指针 p 从 head 开始是否非空cnt 加 1p 移动到下一个结点输出 cnt结束解题流程图是否求单链表表长读入 n 个整数用头插法依次插入链表链表构建完成指针指向表头, 计数归零当前结点是否存在计数加 1指针移向下一个结点输出计数结果
返回列表