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

相关推荐
哭哭啼1 小时前
JAVA服务问题诊断
java·开发语言·jvm
wen_zhufeng2 小时前
IndexTTS 2.5 技术报告
人工智能·算法·机器学习
大熊背2 小时前
树莓派相机自动白平衡详解(四)
算法·树莓派·白平衡·isppipeline
一米阳光86612 小时前
软考(中级)软件设计师核心笔记(9)算法——背包问题
笔记·算法·职场发展·软考·软件设计师·中级职称
晚风醉蝶2 小时前
1-11-奇偶排序-OddEvenSort
java·数据结构·算法
旖旎夜光3 小时前
LeetCode 852:山脉数组的峰顶索引(二分查找) —— 题解
数据结构·c++·算法·leetcode·二分查找
程与留3 小时前
05_Qt 核心模块概览——Qt Core、Gui、Widgets、Quick 的职责划分
c++·qt
CRMEB定制开发3 小时前
2026年最值得推荐的10大开源商城系统盘点
开发语言·人工智能·开源·商城系统·小程序商城
buhuizhiyuci4 小时前
【QT-百日筑基篇】修真世界摸爬滚打多年,终于黄天不负有心人,突破炼器中期——常用控件QWight的属性
开发语言·c++·qt·gui·图形化
小雪崩4 小时前
嵌入式学习 day25:哈希表及排序与查找
linux·c语言·数据结构·学习·排序算法