《数据结构实验指导-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)(链表结点)。

代码流程说明

  1. 定义链表结点结构 Node(数据域 + 指针域 + 构造函数)。
  2. 读入 nnn,表头指针 head 初始化为空。
  3. 循环 nnn 次:读入整数 vvv,新建结点 p,用头插法把 p 插入链表头部。
  4. 从 head 开始遍历链表,统计结点个数 cnt。
  5. 输出 cnt 并换行。

代码实现

cpp 复制代码
#include <iostream>
using namespace std;

struct Node {
    int data;
    Node* next;
    Node(int d) : data(d), next(nullptr) {}
};

int main() {
    int n;
    cin >> n;
    Node* head = nullptr;
    for (int k = 0; k < n; ++k) {
        int v;
        cin >> v;
        Node* p = new Node(v);
        p->next = head;
        head = p;
    }
    int cnt = 0;
    for (Node* p = head; p; p = p->next) cnt++;
    cout << cnt << endl;
    return 0;
}

代码流程图

#mermaid-svg-CLWv39XsHAZbjIrc{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-CLWv39XsHAZbjIrc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-CLWv39XsHAZbjIrc .error-icon{fill:#552222;}#mermaid-svg-CLWv39XsHAZbjIrc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-CLWv39XsHAZbjIrc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-CLWv39XsHAZbjIrc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-CLWv39XsHAZbjIrc .marker.cross{stroke:#333333;}#mermaid-svg-CLWv39XsHAZbjIrc svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-CLWv39XsHAZbjIrc p{margin:0;}#mermaid-svg-CLWv39XsHAZbjIrc .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-CLWv39XsHAZbjIrc .cluster-label text{fill:#333;}#mermaid-svg-CLWv39XsHAZbjIrc .cluster-label span{color:#333;}#mermaid-svg-CLWv39XsHAZbjIrc .cluster-label span p{background-color:transparent;}#mermaid-svg-CLWv39XsHAZbjIrc .label text,#mermaid-svg-CLWv39XsHAZbjIrc span{fill:#333;color:#333;}#mermaid-svg-CLWv39XsHAZbjIrc .node rect,#mermaid-svg-CLWv39XsHAZbjIrc .node circle,#mermaid-svg-CLWv39XsHAZbjIrc .node ellipse,#mermaid-svg-CLWv39XsHAZbjIrc .node polygon,#mermaid-svg-CLWv39XsHAZbjIrc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-CLWv39XsHAZbjIrc .rough-node .label text,#mermaid-svg-CLWv39XsHAZbjIrc .node .label text,#mermaid-svg-CLWv39XsHAZbjIrc .image-shape .label,#mermaid-svg-CLWv39XsHAZbjIrc .icon-shape .label{text-anchor:middle;}#mermaid-svg-CLWv39XsHAZbjIrc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-CLWv39XsHAZbjIrc .rough-node .label,#mermaid-svg-CLWv39XsHAZbjIrc .node .label,#mermaid-svg-CLWv39XsHAZbjIrc .image-shape .label,#mermaid-svg-CLWv39XsHAZbjIrc .icon-shape .label{text-align:center;}#mermaid-svg-CLWv39XsHAZbjIrc .node.clickable{cursor:pointer;}#mermaid-svg-CLWv39XsHAZbjIrc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-CLWv39XsHAZbjIrc .arrowheadPath{fill:#333333;}#mermaid-svg-CLWv39XsHAZbjIrc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-CLWv39XsHAZbjIrc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-CLWv39XsHAZbjIrc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CLWv39XsHAZbjIrc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-CLWv39XsHAZbjIrc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CLWv39XsHAZbjIrc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-CLWv39XsHAZbjIrc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-CLWv39XsHAZbjIrc .cluster text{fill:#333;}#mermaid-svg-CLWv39XsHAZbjIrc .cluster span{color:#333;}#mermaid-svg-CLWv39XsHAZbjIrc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-CLWv39XsHAZbjIrc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-CLWv39XsHAZbjIrc rect.text{fill:none;stroke-width:0;}#mermaid-svg-CLWv39XsHAZbjIrc .icon-shape,#mermaid-svg-CLWv39XsHAZbjIrc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-CLWv39XsHAZbjIrc .icon-shape p,#mermaid-svg-CLWv39XsHAZbjIrc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-CLWv39XsHAZbjIrc .icon-shape .label rect,#mermaid-svg-CLWv39XsHAZbjIrc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-CLWv39XsHAZbjIrc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-CLWv39XsHAZbjIrc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-CLWv39XsHAZbjIrc :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
是
否
开始
读入 n
表头 head 初始化为空
k 从 0 到 n-1
读入整数 v
新建结点 p
p 的 next 指向 head
head 指向 p
k 加 1
cnt 初始化为 0
指针 p 从 head 开始是否非空
cnt 加 1
p 移动到下一个结点
输出 cnt
结束

解题流程图

#mermaid-svg-5bTByZIks0NZNiiO{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-5bTByZIks0NZNiiO .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-5bTByZIks0NZNiiO .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-5bTByZIks0NZNiiO .error-icon{fill:#552222;}#mermaid-svg-5bTByZIks0NZNiiO .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-5bTByZIks0NZNiiO .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-5bTByZIks0NZNiiO .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-5bTByZIks0NZNiiO .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-5bTByZIks0NZNiiO .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-5bTByZIks0NZNiiO .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-5bTByZIks0NZNiiO .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-5bTByZIks0NZNiiO .marker{fill:#333333;stroke:#333333;}#mermaid-svg-5bTByZIks0NZNiiO .marker.cross{stroke:#333333;}#mermaid-svg-5bTByZIks0NZNiiO svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-5bTByZIks0NZNiiO p{margin:0;}#mermaid-svg-5bTByZIks0NZNiiO .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-5bTByZIks0NZNiiO .cluster-label text{fill:#333;}#mermaid-svg-5bTByZIks0NZNiiO .cluster-label span{color:#333;}#mermaid-svg-5bTByZIks0NZNiiO .cluster-label span p{background-color:transparent;}#mermaid-svg-5bTByZIks0NZNiiO .label text,#mermaid-svg-5bTByZIks0NZNiiO span{fill:#333;color:#333;}#mermaid-svg-5bTByZIks0NZNiiO .node rect,#mermaid-svg-5bTByZIks0NZNiiO .node circle,#mermaid-svg-5bTByZIks0NZNiiO .node ellipse,#mermaid-svg-5bTByZIks0NZNiiO .node polygon,#mermaid-svg-5bTByZIks0NZNiiO .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-5bTByZIks0NZNiiO .rough-node .label text,#mermaid-svg-5bTByZIks0NZNiiO .node .label text,#mermaid-svg-5bTByZIks0NZNiiO .image-shape .label,#mermaid-svg-5bTByZIks0NZNiiO .icon-shape .label{text-anchor:middle;}#mermaid-svg-5bTByZIks0NZNiiO .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-5bTByZIks0NZNiiO .rough-node .label,#mermaid-svg-5bTByZIks0NZNiiO .node .label,#mermaid-svg-5bTByZIks0NZNiiO .image-shape .label,#mermaid-svg-5bTByZIks0NZNiiO .icon-shape .label{text-align:center;}#mermaid-svg-5bTByZIks0NZNiiO .node.clickable{cursor:pointer;}#mermaid-svg-5bTByZIks0NZNiiO .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-5bTByZIks0NZNiiO .arrowheadPath{fill:#333333;}#mermaid-svg-5bTByZIks0NZNiiO .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-5bTByZIks0NZNiiO .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-5bTByZIks0NZNiiO .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5bTByZIks0NZNiiO .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-5bTByZIks0NZNiiO .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5bTByZIks0NZNiiO .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-5bTByZIks0NZNiiO .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-5bTByZIks0NZNiiO .cluster text{fill:#333;}#mermaid-svg-5bTByZIks0NZNiiO .cluster span{color:#333;}#mermaid-svg-5bTByZIks0NZNiiO div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-5bTByZIks0NZNiiO .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-5bTByZIks0NZNiiO rect.text{fill:none;stroke-width:0;}#mermaid-svg-5bTByZIks0NZNiiO .icon-shape,#mermaid-svg-5bTByZIks0NZNiiO .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-5bTByZIks0NZNiiO .icon-shape p,#mermaid-svg-5bTByZIks0NZNiiO .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-5bTByZIks0NZNiiO .icon-shape .label rect,#mermaid-svg-5bTByZIks0NZNiiO .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-5bTByZIks0NZNiiO .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-5bTByZIks0NZNiiO .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-5bTByZIks0NZNiiO :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
求单链表表长
读入 n 个整数
用头插法依次插入链表
链表构建完成
指针指向表头, 计数归零
当前结点是否存在
计数加 1
指针移向下一个结点
输出计数结果

相关推荐
CQU_JIAKE6 分钟前
10.1[A]2267,磐久UMX【上下文128K,KVCache部分]
算法
言乐611 分钟前
Python实现关税自动计算模型
开发语言·python·django·virtualenv·pygame
朝朝辞暮i11 分钟前
C++ 第 14 课:引用 &
开发语言·c++·算法
白山编程大哥22 分钟前
适合初学者练习的 C/C++ 开源项目推荐
c语言·c++·开源
Joe_Wang530 分钟前
【从0到1学习JVM · 21】既不浪费空间又没有碎片,标记整理算法到底慢在哪
jvm·学习·算法·垃圾回收·标记整理算法
让学习成为一种生活方式37 分钟前
PlantCellChat--单细胞与空间转录组数据预测植物细胞间通讯的R包--The Plant Journal
算法
梅雅达编程笔记39 分钟前
04-Python CSV数据保存与翻页抓取
开发语言·爬虫·python·pandas·数据采集·csv
C++ 老炮儿的技术栈1 小时前
有符号变量与无符号变量的区别
服务器·开发语言·前端·数据结构·c++·算法·c
估值探索者1 小时前
【Python量化策略实战 #04】Donchian 通道假突破太多?用 ATR 阈值过滤跑通真实突破信号
开发语言·python·接口·api接口·数据api接口·股票数据api接口
个 人 练 习 生1 小时前
C++:模板初阶详解
开发语言·c++·经验分享·学习