《数据结构实验指导-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
指针移向下一个结点
输出计数结果

相关推荐
小雉系统44 分钟前
BcoreOS安全通信架构:FsSession 抗算法后门安全设计
算法·安全·架构
§ꦿCFོ༉2 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
投图匠2 小时前
十种不同风格的 CTP接口 框架
开发语言·python
Pniubi4 小时前
关于算法用现成数据结构和手撕
数据结构
唐墨1235 小时前
linux kernel 比较数据大小的宏定义
linux·算法
爱笑的k115 小时前
nano-vllm 源码剖析:千行 Python 手写离线推理引擎的调度、显存与并行时序
开发语言·python·vllm
拂拉氏6 小时前
【知识讲解-题目讲解】 统计满足K约束的子字符串数量2 (滑动窗口+前缀和+二分查找+分析)
算法·前缀和·二分查找·滑动窗口
X1A0RAN6 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>8 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos