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

相关推荐
catchadmin2 分钟前
PHP 8.7 协程新提案 让跨协程代码共享请求身份
开发语言·php
念何架构之路32 分钟前
go-grpc设计思想
开发语言·后端·golang
小豆庄33 分钟前
Mac 上给视频人脸打码:本地工具的依赖、追踪与推理管线
算法·视觉检测·视频·敏捷流程·纹理贴图
星夜离尘561 小时前
MATLAB 工程实验:从相邻块均值手写重叠 Allan 偏差,数清有效项
算法·matlab·均值算法
酷炫码神1 小时前
Day 10|Pinia 状态管理:把散落在各组件的数据,收进一个全局仓库
android·开发语言·javascript
careathers2 小时前
【数据结构】从堆到 PriorityQueue:手写一个优先级队列
数据结构
Elastic 中国社区官方博客2 小时前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
tyn1882 小时前
记录本地安装nacos服务的方法及异常
java·开发语言
步行cgn3 小时前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc
y1su3 小时前
Leetcode 字符串模板
java·数据结构·算法·leetcode·职场和发展·动态规划