hello-algo/chapter_array_and_linkedlist/list/index.html
2023-07-14 02:56:32 +08:00

4227 lines
No EOL
465 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="动画图解、一键运行的数据结构与算法教程">
<meta name="author" content="Krahets">
<link rel="canonical" href="https://www.hello-algo.com/chapter_array_and_linkedlist/list/">
<link rel="prev" href="../linked_list/">
<link rel="next" href="../summary/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.4.2, mkdocs-material-9.1.11">
<title>4.3.   列表 - Hello 算法</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.85bb2934.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.a6bdf11c.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Noto+Sans+SC:300,300i,400,400i,700,700i%7CFira+Code:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Noto Sans SC";--md-code-font:"Fira Code"}</style>
<link rel="stylesheet" href="../../stylesheets/extra.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#43" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href="../.." title="Hello 算法" class="md-header__button md-logo" aria-label="Hello 算法" data-md-component="logo">
<img src="../../assets/images/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Hello 算法
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
4.3. &nbsp; 列表
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="white" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="grey" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"/></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="搜索" placeholder="搜索" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="查找">
<a href="javascript:void(0)" class="md-search__icon md-icon" title="分享" aria-label="分享" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7 0-.24-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91 1.61 0 2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08Z"/></svg>
</a>
<button type="reset" class="md-search__icon md-icon" title="清空当前内容" aria-label="清空当前内容" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
<div class="md-search__suggest" data-md-component="search-suggest"></div>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
正在初始化搜索引擎
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/krahets/hello-algo" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
krahets/hello-algo
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Hello 算法" class="md-nav__button md-logo" aria-label="Hello 算法" data-md-component="logo">
<img src="../../assets/images/logo.png" alt="logo">
</a>
Hello 算法
</label>
<div class="md-nav__source">
<a href="https://github.com/krahets/hello-algo" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
krahets/hello-algo
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_preface/">0. &nbsp; &nbsp; 前言</a>
<label for="__nav_1">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
0. &nbsp; &nbsp; 前言
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_preface/about_the_book/" class="md-nav__link">
0.1. &nbsp; 关于本书
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_preface/suggestions/" class="md-nav__link">
0.2. &nbsp; 如何使用本书
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_preface/summary/" class="md-nav__link">
0.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_introduction/">1. &nbsp; &nbsp; 初识算法</a>
<label for="__nav_2">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_2">
<span class="md-nav__icon md-icon"></span>
1. &nbsp; &nbsp; 初识算法
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_introduction/algorithms_are_everywhere/" class="md-nav__link">
1.1. &nbsp; 算法无处不在
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_introduction/what_is_dsa/" class="md-nav__link">
1.2. &nbsp; 算法是什么
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_introduction/summary/" class="md-nav__link">
1.3. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_computational_complexity/">2. &nbsp; &nbsp; 复杂度</a>
<label for="__nav_3">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
2. &nbsp; &nbsp; 复杂度
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/performance_evaluation/" class="md-nav__link">
2.1. &nbsp; 算法效率评估
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
2.2. &nbsp; 时间复杂度
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/space_complexity/" class="md-nav__link">
2.3. &nbsp; 空间复杂度
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
2.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_data_structure/">3. &nbsp; &nbsp; 数据结构</a>
<label for="__nav_4">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_4">
<span class="md-nav__icon md-icon"></span>
3. &nbsp; &nbsp; 数据结构
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_data_structure/classification_of_data_structure/" class="md-nav__link">
3.1. &nbsp; 数据结构分类
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_data_structure/basic_data_types/" class="md-nav__link">
3.2. &nbsp; 基本数据类型
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_data_structure/number_encoding/" class="md-nav__link">
3.3. &nbsp; 数字编码 *
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_data_structure/character_encoding/" class="md-nav__link">
3.4. &nbsp; 字符编码 *
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_data_structure/summary/" class="md-nav__link">
3.5. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
<div class="md-nav__link md-nav__link--index ">
<a href="../">4. &nbsp; &nbsp; 数组与链表</a>
<label for="__nav_5">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
4. &nbsp; &nbsp; 数组与链表
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../array/" class="md-nav__link">
4.1. &nbsp; 数组
</a>
</li>
<li class="md-nav__item">
<a href="../linked_list/" class="md-nav__link">
4.2. &nbsp; 链表
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
4.3. &nbsp; 列表
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
4.3. &nbsp; 列表
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#431" class="md-nav__link">
4.3.1. &nbsp; 列表常用操作
</a>
</li>
<li class="md-nav__item">
<a href="#432" class="md-nav__link">
4.3.2. &nbsp; 列表实现 *
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../summary/" class="md-nav__link">
4.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_stack_and_queue/">5. &nbsp; &nbsp; 栈与队列</a>
<label for="__nav_6">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_6">
<span class="md-nav__icon md-icon"></span>
5. &nbsp; &nbsp; 栈与队列
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_stack_and_queue/stack/" class="md-nav__link">
5.1. &nbsp;
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_stack_and_queue/queue/" class="md-nav__link">
5.2. &nbsp; 队列
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_stack_and_queue/deque/" class="md-nav__link">
5.3. &nbsp; 双向队列
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_stack_and_queue/summary/" class="md-nav__link">
5.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_7" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_hashing/">6. &nbsp; &nbsp; 散列表</a>
<label for="__nav_7">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_7">
<span class="md-nav__icon md-icon"></span>
6. &nbsp; &nbsp; 散列表
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
6.1. &nbsp; 哈希表New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
6.2. &nbsp; 哈希冲突New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/hash_algorithm/" class="md-nav__link">
6.3. &nbsp; 哈希算法New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_hashing/summary/" class="md-nav__link">
6.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_tree/">7. &nbsp; &nbsp;</a>
<label for="__nav_8">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_8">
<span class="md-nav__icon md-icon"></span>
7. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree/" class="md-nav__link">
7.1. &nbsp; 二叉树
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_tree/binary_tree_traversal/" class="md-nav__link">
7.2. &nbsp; 二叉树遍历
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_tree/array_representation_of_tree/" class="md-nav__link">
7.3. &nbsp; 二叉树数组表示
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_tree/binary_search_tree/" class="md-nav__link">
7.4. &nbsp; 二叉搜索树
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_tree/avl_tree/" class="md-nav__link">
7.5. &nbsp; AVL 树 *
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_tree/summary/" class="md-nav__link">
7.6. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_heap/">8. &nbsp; &nbsp;</a>
<label for="__nav_9">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_9">
<span class="md-nav__icon md-icon"></span>
8. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_heap/heap/" class="md-nav__link">
8.1. &nbsp;
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
8.2. &nbsp; 建堆操作
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_heap/top_k/" class="md-nav__link">
8.3. &nbsp; Top-K 问题New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_heap/summary/" class="md-nav__link">
8.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_10" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_graph/">9. &nbsp; &nbsp;</a>
<label for="__nav_10">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_10">
<span class="md-nav__icon md-icon"></span>
9. &nbsp; &nbsp;
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_graph/graph/" class="md-nav__link">
9.1. &nbsp;
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
9.2. &nbsp; 图基础操作
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
9.3. &nbsp; 图的遍历
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_graph/summary/" class="md-nav__link">
9.4. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_11" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_searching/">10. &nbsp; &nbsp; 搜索</a>
<label for="__nav_11">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_11">
<span class="md-nav__icon md-icon"></span>
10. &nbsp; &nbsp; 搜索
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
10.1. &nbsp; 二分查找
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/binary_search_edge/" class="md-nav__link">
10.2. &nbsp; 二分查找边界
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
10.3. &nbsp; 哈希优化策略
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
10.4. &nbsp; 重识搜索算法
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_searching/summary/" class="md-nav__link">
10.5. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_12" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_sorting/">11. &nbsp; &nbsp; 排序</a>
<label for="__nav_12">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_12">
<span class="md-nav__icon md-icon"></span>
11. &nbsp; &nbsp; 排序
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_sorting/sorting_algorithm/" class="md-nav__link">
11.1. &nbsp; 排序算法
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/selection_sort/" class="md-nav__link">
11.2. &nbsp; 选择排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/bubble_sort/" class="md-nav__link">
11.3. &nbsp; 冒泡排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/insertion_sort/" class="md-nav__link">
11.4. &nbsp; 插入排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/quick_sort/" class="md-nav__link">
11.5. &nbsp; 快速排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/merge_sort/" class="md-nav__link">
11.6. &nbsp; 归并排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/heap_sort/" class="md-nav__link">
11.7. &nbsp; 堆排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
11.8. &nbsp; 桶排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
11.9. &nbsp; 计数排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
11.10. &nbsp; 基数排序
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_sorting/summary/" class="md-nav__link">
11.11. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_13" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_backtracking/">12. &nbsp; &nbsp; 回溯</a>
<label for="__nav_13">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_13">
<span class="md-nav__icon md-icon"></span>
12. &nbsp; &nbsp; 回溯
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
12.1. &nbsp; 回溯算法
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_backtracking/permutations_problem/" class="md-nav__link">
12.2. &nbsp; 全排列问题
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_backtracking/subset_sum_problem/" class="md-nav__link">
12.3. &nbsp; 子集和问题
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_backtracking/n_queens_problem/" class="md-nav__link">
12.4. &nbsp; N 皇后问题
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_backtracking/summary/" class="md-nav__link">
12.5. &nbsp; 小结
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_14" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_dynamic_programming/">13. &nbsp; &nbsp; 动态规划</a>
<label for="__nav_14">
<span class="md-nav__icon md-icon"></span>
</label>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_14">
<span class="md-nav__icon md-icon"></span>
13. &nbsp; &nbsp; 动态规划
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/intro_to_dynamic_programming/" class="md-nav__link">
13.1. &nbsp; 初探动态规划New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/dp_problem_features/" class="md-nav__link">
13.2. &nbsp; DP 问题特性New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/dp_solution_pipeline/" class="md-nav__link">
13.3. &nbsp; DP 解题思路New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/knapsack_problem/" class="md-nav__link">
13.4. &nbsp; 0-1 背包问题New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/unbounded_knapsack_problem/" class="md-nav__link">
13.5. &nbsp; 完全背包问题New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/edit_distance_problem/" class="md-nav__link">
13.6. &nbsp; 编辑距离问题New
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_dynamic_programming/summary/" class="md-nav__link">
13.7. &nbsp; 小结New
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_15" >
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
14. &nbsp; &nbsp; 附录
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_15">
<span class="md-nav__icon md-icon"></span>
14. &nbsp; &nbsp; 附录
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../chapter_appendix/installation/" class="md-nav__link">
14.1. &nbsp; 编程环境安装
</a>
</li>
<li class="md-nav__item">
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
14.2. &nbsp; 一起参与创作
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
<div class="md-nav__link md-nav__link--index ">
<a href="../../chapter_reference/">参考文献</a>
</div>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_16">
<span class="md-nav__icon md-icon"></span>
参考文献
</label>
<ul class="md-nav__list" data-md-scrollfix>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#431" class="md-nav__link">
4.3.1. &nbsp; 列表常用操作
</a>
</li>
<li class="md-nav__item">
<a href="#432" class="md-nav__link">
4.3.2. &nbsp; 列表实现 *
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/krahets/hello-algo/tree/main/docs/chapter_array_and_linkedlist/list.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-2m10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1 2.1 2.1Z"/></svg>
</a>
<h1 id="43">4.3. &nbsp; 列表<a class="headerlink" href="#43" title="Permanent link">&para;</a></h1>
<p><strong>数组长度不可变导致实用性降低</strong>。在许多情况下,我们事先无法确定需要存储多少数据,这使数组长度的选择变得困难。若长度过小,需要在持续添加数据时频繁扩容数组;若长度过大,则会造成内存空间的浪费。</p>
<p>为解决此问题,出现了一种被称为「动态数组 Dynamic Array」的数据结构即长度可变的数组也常被称为「列表 List」。列表基于数组实现继承了数组的优点并且可以在程序运行过程中动态扩容。在列表中我们可以自由添加元素而无需担心超过容量限制。</p>
<h2 id="431">4.3.1. &nbsp; 列表常用操作<a class="headerlink" href="#431" title="Permanent link">&para;</a></h2>
<p><strong>初始化列表</strong>。通常我们会使用“无初始值”和“有初始值”的两种初始化方法。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="1:11"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><input id="__tabbed_1_10" name="__tabbed_1" type="radio" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Java</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Python</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">JavaScript</label><label for="__tabbed_1_6">TypeScript</label><label for="__tabbed_1_7">C</label><label for="__tabbed_1_8">C#</label><label for="__tabbed_1_9">Swift</label><label for="__tabbed_1_10">Zig</label><label for="__tabbed_1_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.java</span><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="n">List</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;&gt;</span><span class="p">();</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a><span class="c1">// 有初始值(注意数组的元素类型需为 int[] 的包装类 Integer[]</span>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="n">Integer</span><span class="o">[]</span><span class="w"> </span><span class="n">numbers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Integer</span><span class="o">[]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="n">List</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;&gt;</span><span class="p">(</span><span class="n">Arrays</span><span class="p">.</span><span class="na">asList</span><span class="p">(</span><span class="n">numbers</span><span class="p">));</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cpp</span><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="c1">// 需注意C++ 中 vector 即是本文描述的 list</span>
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="p">;</span>
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="p">};</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.py</span><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="c1"># 初始化列表</span>
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="c1"># 无初始值</span>
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="n">list1</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="c1"># 有初始值</span>
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="nb">list</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list_test.go</span><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a><span class="nx">list1</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span>
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a><span class="nx">list</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.js</span><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="kd">const</span><span class="w"> </span><span class="nx">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="kd">const</span><span class="w"> </span><span class="nx">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span><span class="w"> </span><span class="mf">4</span><span class="p">];</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.ts</span><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-5-3" name="__codelineno-5-3" href="#__codelineno-5-3"></a><span class="kd">const</span><span class="w"> </span><span class="nx">list1</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span>
<a id="__codelineno-5-4" name="__codelineno-5-4" href="#__codelineno-5-4"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-5-5" name="__codelineno-5-5" href="#__codelineno-5-5"></a><span class="kd">const</span><span class="w"> </span><span class="nx">list</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span><span class="w"> </span><span class="mf">4</span><span class="p">];</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.c</span><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="c1">// C 未提供内置动态数组</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cs</span><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="p">();</span>
<a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">numbers</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="m">3</span><span class="p">,</span><span class="w"> </span><span class="m">2</span><span class="p">,</span><span class="w"> </span><span class="m">5</span><span class="p">,</span><span class="w"> </span><span class="m">4</span><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numbers</span><span class="p">.</span><span class="n">ToList</span><span class="p">();</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.swift</span><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-8-3" name="__codelineno-8-3" href="#__codelineno-8-3"></a><span class="kd">let</span> <span class="nv">list1</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">=</span> <span class="p">[]</span>
<a id="__codelineno-8-4" name="__codelineno-8-4" href="#__codelineno-8-4"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-8-5" name="__codelineno-8-5" href="#__codelineno-8-5"></a><span class="kd">var</span> <span class="nv">list</span> <span class="p">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">4</span><span class="p">]</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.zig</span><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="c1">// 初始化列表</span>
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="kr">var</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">ArrayList</span><span class="p">(</span><span class="kt">i32</span><span class="p">).</span><span class="n">init</span><span class="p">(</span><span class="n">std</span><span class="p">.</span><span class="n">heap</span><span class="p">.</span><span class="n">page_allocator</span><span class="p">);</span>
<a id="__codelineno-9-3" name="__codelineno-9-3" href="#__codelineno-9-3"></a><span class="k">defer</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">deinit</span><span class="p">();</span>
<a id="__codelineno-9-4" name="__codelineno-9-4" href="#__codelineno-9-4"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">appendSlice</span><span class="p">(</span><span class="o">&amp;</span><span class="p">[</span><span class="n">_</span><span class="p">]</span><span class="kt">i32</span><span class="p">{</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="p">});</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.dart</span><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="cm">/* 初始化列表 */</span>
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="c1">// 无初始值</span>
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span>
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="c1">// 有初始值</span>
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="m">3</span><span class="p">,</span><span class="w"> </span><span class="m">2</span><span class="p">,</span><span class="w"> </span><span class="m">5</span><span class="p">,</span><span class="w"> </span><span class="m">4</span><span class="p">];</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>访问与更新元素</strong>。由于列表的底层数据结构是数组,因此可以在 <span class="arithmatex">\(O(1)\)</span> 时间内访问和更新元素,效率很高。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="2:11"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><input id="__tabbed_2_8" name="__tabbed_2" type="radio" /><input id="__tabbed_2_9" name="__tabbed_2" type="radio" /><input id="__tabbed_2_10" name="__tabbed_2" type="radio" /><input id="__tabbed_2_11" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Java</label><label for="__tabbed_2_2">C++</label><label for="__tabbed_2_3">Python</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">JavaScript</label><label for="__tabbed_2_6">TypeScript</label><label for="__tabbed_2_7">C</label><label for="__tabbed_2_8">C#</label><label for="__tabbed_2_9">Swift</label><label for="__tabbed_2_10">Zig</label><label for="__tabbed_2_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.java</span><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a>
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-11-5" name="__codelineno-11-5" href="#__codelineno-11-5"></a><span class="n">list</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cpp</span><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-12-3" name="__codelineno-12-3" href="#__codelineno-12-3"></a>
<a id="__codelineno-12-4" name="__codelineno-12-4" href="#__codelineno-12-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-12-5" name="__codelineno-12-5" href="#__codelineno-12-5"></a><span class="n">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.py</span><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="c1"># 访问元素</span>
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="n">num</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="nb">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># 访问索引 1 处的元素</span>
<a id="__codelineno-13-3" name="__codelineno-13-3" href="#__codelineno-13-3"></a>
<a id="__codelineno-13-4" name="__codelineno-13-4" href="#__codelineno-13-4"></a><span class="c1"># 更新元素</span>
<a id="__codelineno-13-5" name="__codelineno-13-5" href="#__codelineno-13-5"></a><span class="nb">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list_test.go</span><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="nx">num</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a><span class="nx">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.js</span><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="kd">const</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">list</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="nx">list</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.ts</span><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="kd">const</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">list</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a>
<a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="nx">list</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.c</span><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="c1">// C 未提供内置动态数组</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cs</span><pre><span></span><code><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">[</span><span class="m">1</span><span class="p">];</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a>
<a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="n">list</span><span class="p">[</span><span class="m">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.swift</span><pre><span></span><code><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-19-3" name="__codelineno-19-3" href="#__codelineno-19-3"></a>
<a id="__codelineno-19-4" name="__codelineno-19-4" href="#__codelineno-19-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-19-5" name="__codelineno-19-5" href="#__codelineno-19-5"></a><span class="n">list</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.zig</span><pre><span></span><code><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="c1">// 访问元素</span>
<a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="kr">var</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">items</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-20-3" name="__codelineno-20-3" href="#__codelineno-20-3"></a>
<a id="__codelineno-20-4" name="__codelineno-20-4" href="#__codelineno-20-4"></a><span class="c1">// 更新元素</span>
<a id="__codelineno-20-5" name="__codelineno-20-5" href="#__codelineno-20-5"></a><span class="n">list</span><span class="p">.</span><span class="n">items</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0 </span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.dart</span><pre><span></span><code><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="kt">int</span><span class="w"> </span><span class="kt">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">[</span><span class="m">1</span><span class="p">];</span><span class="w"> </span><span class="c1">// 访问索引 1 处的元素</span>
<a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a>
<a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a><span class="n">list</span><span class="p">[</span><span class="m">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 将索引 1 处的元素更新为 0</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>在列表中添加、插入、删除元素</strong>。相较于数组,列表可以自由地添加与删除元素。在列表尾部添加元素的时间复杂度为 <span class="arithmatex">\(O(1)\)</span> ,但插入和删除元素的效率仍与数组相同,时间复杂度为 <span class="arithmatex">\(O(N)\)</span></p>
<div class="tabbed-set tabbed-alternate" data-tabs="3:11"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><input id="__tabbed_3_3" name="__tabbed_3" type="radio" /><input id="__tabbed_3_4" name="__tabbed_3" type="radio" /><input id="__tabbed_3_5" name="__tabbed_3" type="radio" /><input id="__tabbed_3_6" name="__tabbed_3" type="radio" /><input id="__tabbed_3_7" name="__tabbed_3" type="radio" /><input id="__tabbed_3_8" name="__tabbed_3" type="radio" /><input id="__tabbed_3_9" name="__tabbed_3" type="radio" /><input id="__tabbed_3_10" name="__tabbed_3" type="radio" /><input id="__tabbed_3_11" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">Java</label><label for="__tabbed_3_2">C++</label><label for="__tabbed_3_3">Python</label><label for="__tabbed_3_4">Go</label><label for="__tabbed_3_5">JavaScript</label><label for="__tabbed_3_6">TypeScript</label><label for="__tabbed_3_7">C</label><label for="__tabbed_3_8">C#</label><label for="__tabbed_3_9">Swift</label><label for="__tabbed_3_10">Zig</label><label for="__tabbed_3_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.java</span><pre><span></span><code><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a><span class="n">list</span><span class="p">.</span><span class="na">clear</span><span class="p">();</span>
<a id="__codelineno-22-3" name="__codelineno-22-3" href="#__codelineno-22-3"></a>
<a id="__codelineno-22-4" name="__codelineno-22-4" href="#__codelineno-22-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-22-5" name="__codelineno-22-5" href="#__codelineno-22-5"></a><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a id="__codelineno-22-6" name="__codelineno-22-6" href="#__codelineno-22-6"></a><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<a id="__codelineno-22-7" name="__codelineno-22-7" href="#__codelineno-22-7"></a><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<a id="__codelineno-22-8" name="__codelineno-22-8" href="#__codelineno-22-8"></a><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
<a id="__codelineno-22-9" name="__codelineno-22-9" href="#__codelineno-22-9"></a><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<a id="__codelineno-22-10" name="__codelineno-22-10" href="#__codelineno-22-10"></a>
<a id="__codelineno-22-11" name="__codelineno-22-11" href="#__codelineno-22-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-22-12" name="__codelineno-22-12" href="#__codelineno-22-12"></a><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 在索引 3 处插入数字 6</span>
<a id="__codelineno-22-13" name="__codelineno-22-13" href="#__codelineno-22-13"></a>
<a id="__codelineno-22-14" name="__codelineno-22-14" href="#__codelineno-22-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-22-15" name="__codelineno-22-15" href="#__codelineno-22-15"></a><span class="n">list</span><span class="p">.</span><span class="na">remove</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span><span class="w"> </span><span class="c1">// 删除索引 3 处的元素</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cpp</span><pre><span></span><code><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="n">list</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a>
<a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="n">list</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a id="__codelineno-23-6" name="__codelineno-23-6" href="#__codelineno-23-6"></a><span class="n">list</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<a id="__codelineno-23-7" name="__codelineno-23-7" href="#__codelineno-23-7"></a><span class="n">list</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<a id="__codelineno-23-8" name="__codelineno-23-8" href="#__codelineno-23-8"></a><span class="n">list</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
<a id="__codelineno-23-9" name="__codelineno-23-9" href="#__codelineno-23-9"></a><span class="n">list</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<a id="__codelineno-23-10" name="__codelineno-23-10" href="#__codelineno-23-10"></a>
<a id="__codelineno-23-11" name="__codelineno-23-11" href="#__codelineno-23-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-23-12" name="__codelineno-23-12" href="#__codelineno-23-12"></a><span class="n">list</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 在索引 3 处插入数字 6</span>
<a id="__codelineno-23-13" name="__codelineno-23-13" href="#__codelineno-23-13"></a>
<a id="__codelineno-23-14" name="__codelineno-23-14" href="#__codelineno-23-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-23-15" name="__codelineno-23-15" href="#__codelineno-23-15"></a><span class="n">list</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span><span class="w"> </span><span class="c1">// 删除索引 3 处的元素</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.py</span><pre><span></span><code><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a><span class="c1"># 清空列表</span>
<a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a><span class="nb">list</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
<a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a>
<a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a><span class="c1"># 尾部添加元素</span>
<a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a><span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a><span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<a id="__codelineno-24-7" name="__codelineno-24-7" href="#__codelineno-24-7"></a><span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<a id="__codelineno-24-8" name="__codelineno-24-8" href="#__codelineno-24-8"></a><span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<a id="__codelineno-24-9" name="__codelineno-24-9" href="#__codelineno-24-9"></a><span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
<a id="__codelineno-24-10" name="__codelineno-24-10" href="#__codelineno-24-10"></a>
<a id="__codelineno-24-11" name="__codelineno-24-11" href="#__codelineno-24-11"></a><span class="c1"># 中间插入元素</span>
<a id="__codelineno-24-12" name="__codelineno-24-12" href="#__codelineno-24-12"></a><span class="nb">list</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> <span class="c1"># 在索引 3 处插入数字 6</span>
<a id="__codelineno-24-13" name="__codelineno-24-13" href="#__codelineno-24-13"></a>
<a id="__codelineno-24-14" name="__codelineno-24-14" href="#__codelineno-24-14"></a><span class="c1"># 删除元素</span>
<a id="__codelineno-24-15" name="__codelineno-24-15" href="#__codelineno-24-15"></a><span class="nb">list</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span> <span class="c1"># 删除索引 3 处的元素</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list_test.go</span><pre><span></span><code><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">nil</span>
<a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a>
<a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span>
<a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span>
<a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span>
<a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span>
<a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">)</span>
<a id="__codelineno-25-10" name="__codelineno-25-10" href="#__codelineno-25-10"></a>
<a id="__codelineno-25-11" name="__codelineno-25-11" href="#__codelineno-25-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-25-12" name="__codelineno-25-12" href="#__codelineno-25-12"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span><span class="w"> </span><span class="nb">append</span><span class="p">([]</span><span class="kt">int</span><span class="p">{</span><span class="mi">6</span><span class="p">},</span><span class="w"> </span><span class="nx">list</span><span class="p">[</span><span class="mi">3</span><span class="p">:]</span><span class="o">...</span><span class="p">)</span><span class="o">...</span><span class="p">)</span><span class="w"> </span><span class="c1">// 在索引 3 处插入数字 6</span>
<a id="__codelineno-25-13" name="__codelineno-25-13" href="#__codelineno-25-13"></a>
<a id="__codelineno-25-14" name="__codelineno-25-14" href="#__codelineno-25-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-25-15" name="__codelineno-25-15" href="#__codelineno-25-15"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span><span class="w"> </span><span class="nx">list</span><span class="p">[</span><span class="mi">4</span><span class="p">:]</span><span class="o">...</span><span class="p">)</span><span class="w"> </span><span class="c1">// 删除索引 3 处的元素</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.js</span><pre><span></span><code><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a>
<a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">1</span><span class="p">);</span>
<a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">3</span><span class="p">);</span>
<a id="__codelineno-26-7" name="__codelineno-26-7" href="#__codelineno-26-7"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">2</span><span class="p">);</span>
<a id="__codelineno-26-8" name="__codelineno-26-8" href="#__codelineno-26-8"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">5</span><span class="p">);</span>
<a id="__codelineno-26-9" name="__codelineno-26-9" href="#__codelineno-26-9"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">4</span><span class="p">);</span>
<a id="__codelineno-26-10" name="__codelineno-26-10" href="#__codelineno-26-10"></a>
<a id="__codelineno-26-11" name="__codelineno-26-11" href="#__codelineno-26-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-26-12" name="__codelineno-26-12" href="#__codelineno-26-12"></a><span class="nx">list</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">6</span><span class="p">);</span>
<a id="__codelineno-26-13" name="__codelineno-26-13" href="#__codelineno-26-13"></a>
<a id="__codelineno-26-14" name="__codelineno-26-14" href="#__codelineno-26-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-26-15" name="__codelineno-26-15" href="#__codelineno-26-15"></a><span class="nx">list</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.ts</span><pre><span></span><code><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a>
<a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-27-5" name="__codelineno-27-5" href="#__codelineno-27-5"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">1</span><span class="p">);</span>
<a id="__codelineno-27-6" name="__codelineno-27-6" href="#__codelineno-27-6"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">3</span><span class="p">);</span>
<a id="__codelineno-27-7" name="__codelineno-27-7" href="#__codelineno-27-7"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">2</span><span class="p">);</span>
<a id="__codelineno-27-8" name="__codelineno-27-8" href="#__codelineno-27-8"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">5</span><span class="p">);</span>
<a id="__codelineno-27-9" name="__codelineno-27-9" href="#__codelineno-27-9"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="mf">4</span><span class="p">);</span>
<a id="__codelineno-27-10" name="__codelineno-27-10" href="#__codelineno-27-10"></a>
<a id="__codelineno-27-11" name="__codelineno-27-11" href="#__codelineno-27-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-27-12" name="__codelineno-27-12" href="#__codelineno-27-12"></a><span class="nx">list</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">6</span><span class="p">);</span>
<a id="__codelineno-27-13" name="__codelineno-27-13" href="#__codelineno-27-13"></a>
<a id="__codelineno-27-14" name="__codelineno-27-14" href="#__codelineno-27-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-27-15" name="__codelineno-27-15" href="#__codelineno-27-15"></a><span class="nx">list</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.c</span><pre><span></span><code><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="c1">// C 未提供内置动态数组</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cs</span><pre><span></span><code><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a><span class="n">list</span><span class="p">.</span><span class="n">Clear</span><span class="p">();</span>
<a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a>
<a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a><span class="n">list</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="m">1</span><span class="p">);</span>
<a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a><span class="n">list</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="m">3</span><span class="p">);</span>
<a id="__codelineno-29-7" name="__codelineno-29-7" href="#__codelineno-29-7"></a><span class="n">list</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="m">2</span><span class="p">);</span>
<a id="__codelineno-29-8" name="__codelineno-29-8" href="#__codelineno-29-8"></a><span class="n">list</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="m">5</span><span class="p">);</span>
<a id="__codelineno-29-9" name="__codelineno-29-9" href="#__codelineno-29-9"></a><span class="n">list</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="m">4</span><span class="p">);</span>
<a id="__codelineno-29-10" name="__codelineno-29-10" href="#__codelineno-29-10"></a>
<a id="__codelineno-29-11" name="__codelineno-29-11" href="#__codelineno-29-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-29-12" name="__codelineno-29-12" href="#__codelineno-29-12"></a><span class="n">list</span><span class="p">.</span><span class="n">Insert</span><span class="p">(</span><span class="m">3</span><span class="p">,</span><span class="w"> </span><span class="m">6</span><span class="p">);</span>
<a id="__codelineno-29-13" name="__codelineno-29-13" href="#__codelineno-29-13"></a>
<a id="__codelineno-29-14" name="__codelineno-29-14" href="#__codelineno-29-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-29-15" name="__codelineno-29-15" href="#__codelineno-29-15"></a><span class="n">list</span><span class="p">.</span><span class="n">RemoveAt</span><span class="p">(</span><span class="m">3</span><span class="p">);</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.swift</span><pre><span></span><code><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a><span class="n">list</span><span class="p">.</span><span class="bp">removeAll</span><span class="p">()</span>
<a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a>
<a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
<a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
<a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a>
<a id="__codelineno-30-11" name="__codelineno-30-11" href="#__codelineno-30-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-30-12" name="__codelineno-30-12" href="#__codelineno-30-12"></a><span class="n">list</span><span class="p">.</span><span class="bp">insert</span><span class="p">(</span><span class="mi">6</span><span class="p">,</span> <span class="n">at</span><span class="p">:</span> <span class="mi">3</span><span class="p">)</span> <span class="c1">// 在索引 3 处插入数字 6</span>
<a id="__codelineno-30-13" name="__codelineno-30-13" href="#__codelineno-30-13"></a>
<a id="__codelineno-30-14" name="__codelineno-30-14" href="#__codelineno-30-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-30-15" name="__codelineno-30-15" href="#__codelineno-30-15"></a><span class="n">list</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">at</span><span class="p">:</span> <span class="mi">3</span><span class="p">)</span> <span class="c1">// 删除索引 3 处的元素</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.zig</span><pre><span></span><code><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="c1">// 清空列表</span>
<a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="n">list</span><span class="p">.</span><span class="n">clearRetainingCapacity</span><span class="p">();</span>
<a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a>
<a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a><span class="c1">// 尾部添加元素</span>
<a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<a id="__codelineno-31-7" name="__codelineno-31-7" href="#__codelineno-31-7"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<a id="__codelineno-31-8" name="__codelineno-31-8" href="#__codelineno-31-8"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span>
<a id="__codelineno-31-9" name="__codelineno-31-9" href="#__codelineno-31-9"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<a id="__codelineno-31-10" name="__codelineno-31-10" href="#__codelineno-31-10"></a>
<a id="__codelineno-31-11" name="__codelineno-31-11" href="#__codelineno-31-11"></a><span class="c1">// 中间插入元素</span>
<a id="__codelineno-31-12" name="__codelineno-31-12" href="#__codelineno-31-12"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 在索引 3 处插入数字 6</span>
<a id="__codelineno-31-13" name="__codelineno-31-13" href="#__codelineno-31-13"></a>
<a id="__codelineno-31-14" name="__codelineno-31-14" href="#__codelineno-31-14"></a><span class="c1">// 删除元素</span>
<a id="__codelineno-31-15" name="__codelineno-31-15" href="#__codelineno-31-15"></a><span class="n">_</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">orderedRemove</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span><span class="w"> </span><span class="c1">// 删除索引 3 处的元素</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.dart</span><pre><span></span><code><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="cm">/* 清空列表 */</span>
<a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a><span class="n">list</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a>
<a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a><span class="n">list</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="m">1</span><span class="p">);</span>
<a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a><span class="n">list</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="m">3</span><span class="p">);</span>
<a id="__codelineno-32-7" name="__codelineno-32-7" href="#__codelineno-32-7"></a><span class="n">list</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="m">2</span><span class="p">);</span>
<a id="__codelineno-32-8" name="__codelineno-32-8" href="#__codelineno-32-8"></a><span class="n">list</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="m">5</span><span class="p">);</span>
<a id="__codelineno-32-9" name="__codelineno-32-9" href="#__codelineno-32-9"></a><span class="n">list</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="m">4</span><span class="p">);</span>
<a id="__codelineno-32-10" name="__codelineno-32-10" href="#__codelineno-32-10"></a>
<a id="__codelineno-32-11" name="__codelineno-32-11" href="#__codelineno-32-11"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-32-12" name="__codelineno-32-12" href="#__codelineno-32-12"></a><span class="n">list</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="m">3</span><span class="p">,</span><span class="w"> </span><span class="m">6</span><span class="p">);</span><span class="w"> </span><span class="c1">// 在索引 3 处插入数字 6</span>
<a id="__codelineno-32-13" name="__codelineno-32-13" href="#__codelineno-32-13"></a>
<a id="__codelineno-32-14" name="__codelineno-32-14" href="#__codelineno-32-14"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-32-15" name="__codelineno-32-15" href="#__codelineno-32-15"></a><span class="n">list</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="m">3</span><span class="p">);</span><span class="w"> </span><span class="c1">// 删除索引 3 处的元素</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>遍历列表</strong>。与数组一样,列表可以根据索引遍历,也可以直接遍历各元素。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="4:11"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><input id="__tabbed_4_4" name="__tabbed_4" type="radio" /><input id="__tabbed_4_5" name="__tabbed_4" type="radio" /><input id="__tabbed_4_6" name="__tabbed_4" type="radio" /><input id="__tabbed_4_7" name="__tabbed_4" type="radio" /><input id="__tabbed_4_8" name="__tabbed_4" type="radio" /><input id="__tabbed_4_9" name="__tabbed_4" type="radio" /><input id="__tabbed_4_10" name="__tabbed_4" type="radio" /><input id="__tabbed_4_11" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">Java</label><label for="__tabbed_4_2">C++</label><label for="__tabbed_4_3">Python</label><label for="__tabbed_4_4">Go</label><label for="__tabbed_4_5">JavaScript</label><label for="__tabbed_4_6">TypeScript</label><label for="__tabbed_4_7">C</label><label for="__tabbed_4_8">C#</label><label for="__tabbed_4_9">Swift</label><label for="__tabbed_4_10">Zig</label><label for="__tabbed_4_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.java</span><pre><span></span><code><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-33-2" name="__codelineno-33-2" href="#__codelineno-33-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-33-3" name="__codelineno-33-3" href="#__codelineno-33-3"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="na">size</span><span class="p">();</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-33-4" name="__codelineno-33-4" href="#__codelineno-33-4"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-33-5" name="__codelineno-33-5" href="#__codelineno-33-5"></a><span class="p">}</span>
<a id="__codelineno-33-6" name="__codelineno-33-6" href="#__codelineno-33-6"></a>
<a id="__codelineno-33-7" name="__codelineno-33-7" href="#__codelineno-33-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-33-8" name="__codelineno-33-8" href="#__codelineno-33-8"></a><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-33-9" name="__codelineno-33-9" href="#__codelineno-33-9"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-33-10" name="__codelineno-33-10" href="#__codelineno-33-10"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-33-11" name="__codelineno-33-11" href="#__codelineno-33-11"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cpp</span><pre><span></span><code><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">size</span><span class="p">();</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a><span class="p">}</span>
<a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a>
<a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-34-10" name="__codelineno-34-10" href="#__codelineno-34-10"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-34-11" name="__codelineno-34-11" href="#__codelineno-34-11"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.py</span><pre><span></span><code><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a><span class="c1"># 通过索引遍历列表</span>
<a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
<a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">list</span><span class="p">)):</span>
<a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-35-5" name="__codelineno-35-5" href="#__codelineno-35-5"></a>
<a id="__codelineno-35-6" name="__codelineno-35-6" href="#__codelineno-35-6"></a><span class="c1"># 直接遍历列表元素</span>
<a id="__codelineno-35-7" name="__codelineno-35-7" href="#__codelineno-35-7"></a><span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
<a id="__codelineno-35-8" name="__codelineno-35-8" href="#__codelineno-35-8"></a><span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">:</span>
<a id="__codelineno-35-9" name="__codelineno-35-9" href="#__codelineno-35-9"></a> <span class="n">count</span> <span class="o">+=</span> <span class="mi">1</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list_test.go</span><pre><span></span><code><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a><span class="nx">count</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span>
<a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="p">&lt;</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">list</span><span class="p">);</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
<a id="__codelineno-36-5" name="__codelineno-36-5" href="#__codelineno-36-5"></a><span class="p">}</span>
<a id="__codelineno-36-6" name="__codelineno-36-6" href="#__codelineno-36-6"></a>
<a id="__codelineno-36-7" name="__codelineno-36-7" href="#__codelineno-36-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-36-8" name="__codelineno-36-8" href="#__codelineno-36-8"></a><span class="nx">count</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">0</span>
<a id="__codelineno-36-9" name="__codelineno-36-9" href="#__codelineno-36-9"></a><span class="k">for</span><span class="w"> </span><span class="k">range</span><span class="w"> </span><span class="nx">list</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-36-10" name="__codelineno-36-10" href="#__codelineno-36-10"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span>
<a id="__codelineno-36-11" name="__codelineno-36-11" href="#__codelineno-36-11"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.js</span><pre><span></span><code><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a><span class="p">}</span>
<a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a>
<a id="__codelineno-37-7" name="__codelineno-37-7" href="#__codelineno-37-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-37-8" name="__codelineno-37-8" href="#__codelineno-37-8"></a><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<a id="__codelineno-37-9" name="__codelineno-37-9" href="#__codelineno-37-9"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-37-10" name="__codelineno-37-10" href="#__codelineno-37-10"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-37-11" name="__codelineno-37-11" href="#__codelineno-37-11"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.ts</span><pre><span></span><code><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a><span class="kd">let</span><span class="w"> </span><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">list</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a><span class="p">}</span>
<a id="__codelineno-38-6" name="__codelineno-38-6" href="#__codelineno-38-6"></a>
<a id="__codelineno-38-7" name="__codelineno-38-7" href="#__codelineno-38-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-38-8" name="__codelineno-38-8" href="#__codelineno-38-8"></a><span class="nx">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
<a id="__codelineno-38-9" name="__codelineno-38-9" href="#__codelineno-38-9"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">const</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="nx">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-38-10" name="__codelineno-38-10" href="#__codelineno-38-10"></a><span class="w"> </span><span class="nx">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-38-11" name="__codelineno-38-11" href="#__codelineno-38-11"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.c</span><pre><span></span><code><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a><span class="c1">// C 未提供内置动态数组</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cs</span><pre><span></span><code><a id="__codelineno-40-1" name="__codelineno-40-1" href="#__codelineno-40-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-40-2" name="__codelineno-40-2" href="#__codelineno-40-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
<a id="__codelineno-40-3" name="__codelineno-40-3" href="#__codelineno-40-3"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">Count</span><span class="p">();</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
<a id="__codelineno-40-4" name="__codelineno-40-4" href="#__codelineno-40-4"></a><span class="p">{</span>
<a id="__codelineno-40-5" name="__codelineno-40-5" href="#__codelineno-40-5"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-40-6" name="__codelineno-40-6" href="#__codelineno-40-6"></a><span class="p">}</span>
<a id="__codelineno-40-7" name="__codelineno-40-7" href="#__codelineno-40-7"></a>
<a id="__codelineno-40-8" name="__codelineno-40-8" href="#__codelineno-40-8"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-40-9" name="__codelineno-40-9" href="#__codelineno-40-9"></a><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
<a id="__codelineno-40-10" name="__codelineno-40-10" href="#__codelineno-40-10"></a><span class="k">foreach</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">list</span><span class="p">)</span>
<a id="__codelineno-40-11" name="__codelineno-40-11" href="#__codelineno-40-11"></a><span class="p">{</span>
<a id="__codelineno-40-12" name="__codelineno-40-12" href="#__codelineno-40-12"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-40-13" name="__codelineno-40-13" href="#__codelineno-40-13"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.swift</span><pre><span></span><code><a id="__codelineno-41-1" name="__codelineno-41-1" href="#__codelineno-41-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-41-2" name="__codelineno-41-2" href="#__codelineno-41-2"></a><span class="kd">var</span> <span class="nv">count</span> <span class="p">=</span> <span class="mi">0</span>
<a id="__codelineno-41-3" name="__codelineno-41-3" href="#__codelineno-41-3"></a><span class="k">for</span> <span class="kc">_</span> <span class="k">in</span> <span class="n">list</span><span class="p">.</span><span class="bp">indices</span> <span class="p">{</span>
<a id="__codelineno-41-4" name="__codelineno-41-4" href="#__codelineno-41-4"></a> <span class="bp">count</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-41-5" name="__codelineno-41-5" href="#__codelineno-41-5"></a><span class="p">}</span>
<a id="__codelineno-41-6" name="__codelineno-41-6" href="#__codelineno-41-6"></a>
<a id="__codelineno-41-7" name="__codelineno-41-7" href="#__codelineno-41-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-41-8" name="__codelineno-41-8" href="#__codelineno-41-8"></a><span class="bp">count</span> <span class="p">=</span> <span class="mi">0</span>
<a id="__codelineno-41-9" name="__codelineno-41-9" href="#__codelineno-41-9"></a><span class="k">for</span> <span class="kc">_</span> <span class="k">in</span> <span class="n">list</span> <span class="p">{</span>
<a id="__codelineno-41-10" name="__codelineno-41-10" href="#__codelineno-41-10"></a> <span class="bp">count</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-41-11" name="__codelineno-41-11" href="#__codelineno-41-11"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.zig</span><pre><span></span><code><a id="__codelineno-42-1" name="__codelineno-42-1" href="#__codelineno-42-1"></a><span class="c1">// 通过索引遍历列表</span>
<a id="__codelineno-42-2" name="__codelineno-42-2" href="#__codelineno-42-2"></a><span class="kr">var</span><span class="w"> </span><span class="n">count</span><span class="o">:</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-42-3" name="__codelineno-42-3" href="#__codelineno-42-3"></a><span class="kr">var</span><span class="w"> </span><span class="n">i</span><span class="o">:</span><span class="w"> </span><span class="kt">i32</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-42-4" name="__codelineno-42-4" href="#__codelineno-42-4"></a><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">items</span><span class="p">.</span><span class="n">len</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="n">i</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-42-5" name="__codelineno-42-5" href="#__codelineno-42-5"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-42-6" name="__codelineno-42-6" href="#__codelineno-42-6"></a><span class="p">}</span>
<a id="__codelineno-42-7" name="__codelineno-42-7" href="#__codelineno-42-7"></a>
<a id="__codelineno-42-8" name="__codelineno-42-8" href="#__codelineno-42-8"></a><span class="c1">// 直接遍历列表元素</span>
<a id="__codelineno-42-9" name="__codelineno-42-9" href="#__codelineno-42-9"></a><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-42-10" name="__codelineno-42-10" href="#__codelineno-42-10"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">items</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="n">_</span><span class="o">|</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-42-11" name="__codelineno-42-11" href="#__codelineno-42-11"></a><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-42-12" name="__codelineno-42-12" href="#__codelineno-42-12"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.dart</span><pre><span></span><code><a id="__codelineno-43-1" name="__codelineno-43-1" href="#__codelineno-43-1"></a><span class="cm">/* 通过索引遍历列表 */</span>
<a id="__codelineno-43-2" name="__codelineno-43-2" href="#__codelineno-43-2"></a><span class="kt">int</span><span class="w"> </span><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
<a id="__codelineno-43-3" name="__codelineno-43-3" href="#__codelineno-43-3"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">length</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-43-4" name="__codelineno-43-4" href="#__codelineno-43-4"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-43-5" name="__codelineno-43-5" href="#__codelineno-43-5"></a><span class="p">}</span>
<a id="__codelineno-43-6" name="__codelineno-43-6" href="#__codelineno-43-6"></a>
<a id="__codelineno-43-7" name="__codelineno-43-7" href="#__codelineno-43-7"></a><span class="cm">/* 直接遍历列表元素 */</span>
<a id="__codelineno-43-8" name="__codelineno-43-8" href="#__codelineno-43-8"></a><span class="n">count</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span>
<a id="__codelineno-43-9" name="__codelineno-43-9" href="#__codelineno-43-9"></a><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-43-10" name="__codelineno-43-10" href="#__codelineno-43-10"></a><span class="w"> </span><span class="n">count</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-43-11" name="__codelineno-43-11" href="#__codelineno-43-11"></a><span class="p">}</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>拼接两个列表</strong>。给定一个新列表 <code>list1</code> ,我们可以将该列表拼接到原列表的尾部。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="5:11"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><input id="__tabbed_5_3" name="__tabbed_5" type="radio" /><input id="__tabbed_5_4" name="__tabbed_5" type="radio" /><input id="__tabbed_5_5" name="__tabbed_5" type="radio" /><input id="__tabbed_5_6" name="__tabbed_5" type="radio" /><input id="__tabbed_5_7" name="__tabbed_5" type="radio" /><input id="__tabbed_5_8" name="__tabbed_5" type="radio" /><input id="__tabbed_5_9" name="__tabbed_5" type="radio" /><input id="__tabbed_5_10" name="__tabbed_5" type="radio" /><input id="__tabbed_5_11" name="__tabbed_5" type="radio" /><div class="tabbed-labels"><label for="__tabbed_5_1">Java</label><label for="__tabbed_5_2">C++</label><label for="__tabbed_5_3">Python</label><label for="__tabbed_5_4">Go</label><label for="__tabbed_5_5">JavaScript</label><label for="__tabbed_5_6">TypeScript</label><label for="__tabbed_5_7">C</label><label for="__tabbed_5_8">C#</label><label for="__tabbed_5_9">Swift</label><label for="__tabbed_5_10">Zig</label><label for="__tabbed_5_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.java</span><pre><span></span><code><a id="__codelineno-44-1" name="__codelineno-44-1" href="#__codelineno-44-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-44-2" name="__codelineno-44-2" href="#__codelineno-44-2"></a><span class="n">List</span><span class="o">&lt;</span><span class="n">Integer</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;&gt;</span><span class="p">(</span><span class="n">Arrays</span><span class="p">.</span><span class="na">asList</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">Integer</span><span class="o">[]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="p">}));</span>
<a id="__codelineno-44-3" name="__codelineno-44-3" href="#__codelineno-44-3"></a><span class="n">list</span><span class="p">.</span><span class="na">addAll</span><span class="p">(</span><span class="n">list1</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cpp</span><pre><span></span><code><a id="__codelineno-45-1" name="__codelineno-45-1" href="#__codelineno-45-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-45-2" name="__codelineno-45-2" href="#__codelineno-45-2"></a><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-45-3" name="__codelineno-45-3" href="#__codelineno-45-3"></a><span class="c1">// 将列表 list1 拼接到 list 之后</span>
<a id="__codelineno-45-4" name="__codelineno-45-4" href="#__codelineno-45-4"></a><span class="n">list</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span><span class="w"> </span><span class="n">list1</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="w"> </span><span class="n">list1</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.py</span><pre><span></span><code><a id="__codelineno-46-1" name="__codelineno-46-1" href="#__codelineno-46-1"></a><span class="c1"># 拼接两个列表</span>
<a id="__codelineno-46-2" name="__codelineno-46-2" href="#__codelineno-46-2"></a><span class="n">list1</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">6</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">9</span><span class="p">]</span>
<a id="__codelineno-46-3" name="__codelineno-46-3" href="#__codelineno-46-3"></a><span class="nb">list</span> <span class="o">+=</span> <span class="n">list1</span> <span class="c1"># 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list_test.go</span><pre><span></span><code><a id="__codelineno-47-1" name="__codelineno-47-1" href="#__codelineno-47-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-47-2" name="__codelineno-47-2" href="#__codelineno-47-2"></a><span class="nx">list1</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="p">{</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="p">}</span>
<a id="__codelineno-47-3" name="__codelineno-47-3" href="#__codelineno-47-3"></a><span class="nx">list</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">list</span><span class="p">,</span><span class="w"> </span><span class="nx">list1</span><span class="o">...</span><span class="p">)</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.js</span><pre><span></span><code><a id="__codelineno-48-1" name="__codelineno-48-1" href="#__codelineno-48-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-48-2" name="__codelineno-48-2" href="#__codelineno-48-2"></a><span class="kd">const</span><span class="w"> </span><span class="nx">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">6</span><span class="p">,</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span><span class="w"> </span><span class="mf">7</span><span class="p">,</span><span class="w"> </span><span class="mf">10</span><span class="p">,</span><span class="w"> </span><span class="mf">9</span><span class="p">];</span>
<a id="__codelineno-48-3" name="__codelineno-48-3" href="#__codelineno-48-3"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(...</span><span class="nx">list1</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.ts</span><pre><span></span><code><a id="__codelineno-49-1" name="__codelineno-49-1" href="#__codelineno-49-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-49-2" name="__codelineno-49-2" href="#__codelineno-49-2"></a><span class="kd">const</span><span class="w"> </span><span class="nx">list1</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">6</span><span class="p">,</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span><span class="w"> </span><span class="mf">7</span><span class="p">,</span><span class="w"> </span><span class="mf">10</span><span class="p">,</span><span class="w"> </span><span class="mf">9</span><span class="p">];</span>
<a id="__codelineno-49-3" name="__codelineno-49-3" href="#__codelineno-49-3"></a><span class="nx">list</span><span class="p">.</span><span class="nx">push</span><span class="p">(...</span><span class="nx">list1</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.c</span><pre><span></span><code><a id="__codelineno-50-1" name="__codelineno-50-1" href="#__codelineno-50-1"></a><span class="c1">// C 未提供内置动态数组</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cs</span><pre><span></span><code><a id="__codelineno-51-1" name="__codelineno-51-1" href="#__codelineno-51-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-51-2" name="__codelineno-51-2" href="#__codelineno-51-2"></a><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="m">6</span><span class="p">,</span><span class="w"> </span><span class="m">8</span><span class="p">,</span><span class="w"> </span><span class="m">7</span><span class="p">,</span><span class="w"> </span><span class="m">10</span><span class="p">,</span><span class="w"> </span><span class="m">9</span><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-51-3" name="__codelineno-51-3" href="#__codelineno-51-3"></a><span class="n">list</span><span class="p">.</span><span class="n">AddRange</span><span class="p">(</span><span class="n">list1</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.swift</span><pre><span></span><code><a id="__codelineno-52-1" name="__codelineno-52-1" href="#__codelineno-52-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-52-2" name="__codelineno-52-2" href="#__codelineno-52-2"></a><span class="kd">let</span> <span class="nv">list1</span> <span class="p">=</span> <span class="p">[</span><span class="mi">6</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">9</span><span class="p">]</span>
<a id="__codelineno-52-3" name="__codelineno-52-3" href="#__codelineno-52-3"></a><span class="n">list</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">contentsOf</span><span class="p">:</span> <span class="n">list1</span><span class="p">)</span> <span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.zig</span><pre><span></span><code><a id="__codelineno-53-1" name="__codelineno-53-1" href="#__codelineno-53-1"></a><span class="c1">// 拼接两个列表</span>
<a id="__codelineno-53-2" name="__codelineno-53-2" href="#__codelineno-53-2"></a><span class="kr">var</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">ArrayList</span><span class="p">(</span><span class="kt">i32</span><span class="p">).</span><span class="n">init</span><span class="p">(</span><span class="n">std</span><span class="p">.</span><span class="n">heap</span><span class="p">.</span><span class="n">page_allocator</span><span class="p">);</span>
<a id="__codelineno-53-3" name="__codelineno-53-3" href="#__codelineno-53-3"></a><span class="k">defer</span><span class="w"> </span><span class="n">list1</span><span class="p">.</span><span class="n">deinit</span><span class="p">();</span>
<a id="__codelineno-53-4" name="__codelineno-53-4" href="#__codelineno-53-4"></a><span class="k">try</span><span class="w"> </span><span class="n">list1</span><span class="p">.</span><span class="n">appendSlice</span><span class="p">(</span><span class="o">&amp;</span><span class="p">[</span><span class="n">_</span><span class="p">]</span><span class="kt">i32</span><span class="p">{</span><span class="w"> </span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">,</span><span class="w"> </span><span class="mi">7</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="p">});</span>
<a id="__codelineno-53-5" name="__codelineno-53-5" href="#__codelineno-53-5"></a><span class="k">try</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">insertSlice</span><span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">items</span><span class="p">.</span><span class="n">len</span><span class="p">,</span><span class="w"> </span><span class="n">list1</span><span class="p">.</span><span class="n">items</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.dart</span><pre><span></span><code><a id="__codelineno-54-1" name="__codelineno-54-1" href="#__codelineno-54-1"></a><span class="cm">/* 拼接两个列表 */</span>
<a id="__codelineno-54-2" name="__codelineno-54-2" href="#__codelineno-54-2"></a><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="m">6</span><span class="p">,</span><span class="w"> </span><span class="m">8</span><span class="p">,</span><span class="w"> </span><span class="m">7</span><span class="p">,</span><span class="w"> </span><span class="m">10</span><span class="p">,</span><span class="w"> </span><span class="m">9</span><span class="p">];</span>
<a id="__codelineno-54-3" name="__codelineno-54-3" href="#__codelineno-54-3"></a><span class="n">list</span><span class="p">.</span><span class="n">addAll</span><span class="p">(</span><span class="n">list1</span><span class="p">);</span><span class="w"> </span><span class="c1">// 将列表 list1 拼接到 list 之后</span>
</code></pre></div>
</div>
</div>
</div>
<p><strong>排序列表</strong>。排序也是常用的方法之一。完成列表排序后,我们便可以使用在数组类算法题中经常考察的「二分查找」和「双指针」算法。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="6:11"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><input id="__tabbed_6_3" name="__tabbed_6" type="radio" /><input id="__tabbed_6_4" name="__tabbed_6" type="radio" /><input id="__tabbed_6_5" name="__tabbed_6" type="radio" /><input id="__tabbed_6_6" name="__tabbed_6" type="radio" /><input id="__tabbed_6_7" name="__tabbed_6" type="radio" /><input id="__tabbed_6_8" name="__tabbed_6" type="radio" /><input id="__tabbed_6_9" name="__tabbed_6" type="radio" /><input id="__tabbed_6_10" name="__tabbed_6" type="radio" /><input id="__tabbed_6_11" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">Java</label><label for="__tabbed_6_2">C++</label><label for="__tabbed_6_3">Python</label><label for="__tabbed_6_4">Go</label><label for="__tabbed_6_5">JavaScript</label><label for="__tabbed_6_6">TypeScript</label><label for="__tabbed_6_7">C</label><label for="__tabbed_6_8">C#</label><label for="__tabbed_6_9">Swift</label><label for="__tabbed_6_10">Zig</label><label for="__tabbed_6_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.java</span><pre><span></span><code><a id="__codelineno-55-1" name="__codelineno-55-1" href="#__codelineno-55-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-55-2" name="__codelineno-55-2" href="#__codelineno-55-2"></a><span class="n">Collections</span><span class="p">.</span><span class="na">sort</span><span class="p">(</span><span class="n">list</span><span class="p">);</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cpp</span><pre><span></span><code><a id="__codelineno-56-1" name="__codelineno-56-1" href="#__codelineno-56-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-56-2" name="__codelineno-56-2" href="#__codelineno-56-2"></a><span class="n">sort</span><span class="p">(</span><span class="n">list</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">end</span><span class="p">());</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.py</span><pre><span></span><code><a id="__codelineno-57-1" name="__codelineno-57-1" href="#__codelineno-57-1"></a><span class="c1"># 排序列表</span>
<a id="__codelineno-57-2" name="__codelineno-57-2" href="#__codelineno-57-2"></a><span class="nb">list</span><span class="o">.</span><span class="n">sort</span><span class="p">()</span> <span class="c1"># 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list_test.go</span><pre><span></span><code><a id="__codelineno-58-1" name="__codelineno-58-1" href="#__codelineno-58-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-58-2" name="__codelineno-58-2" href="#__codelineno-58-2"></a><span class="nx">sort</span><span class="p">.</span><span class="nx">Ints</span><span class="p">(</span><span class="nx">list</span><span class="p">)</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.js</span><pre><span></span><code><a id="__codelineno-59-1" name="__codelineno-59-1" href="#__codelineno-59-1"></a><span class="cm">/* 排序列表 */</span><span class="w"> </span>
<a id="__codelineno-59-2" name="__codelineno-59-2" href="#__codelineno-59-2"></a><span class="nx">list</span><span class="p">.</span><span class="nx">sort</span><span class="p">((</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">b</span><span class="p">);</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.ts</span><pre><span></span><code><a id="__codelineno-60-1" name="__codelineno-60-1" href="#__codelineno-60-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-60-2" name="__codelineno-60-2" href="#__codelineno-60-2"></a><span class="nx">list</span><span class="p">.</span><span class="nx">sort</span><span class="p">((</span><span class="nx">a</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">a</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">b</span><span class="p">);</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.c</span><pre><span></span><code><a id="__codelineno-61-1" name="__codelineno-61-1" href="#__codelineno-61-1"></a><span class="c1">// C 未提供内置动态数组</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.cs</span><pre><span></span><code><a id="__codelineno-62-1" name="__codelineno-62-1" href="#__codelineno-62-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-62-2" name="__codelineno-62-2" href="#__codelineno-62-2"></a><span class="n">list</span><span class="p">.</span><span class="n">Sort</span><span class="p">();</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.swift</span><pre><span></span><code><a id="__codelineno-63-1" name="__codelineno-63-1" href="#__codelineno-63-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-63-2" name="__codelineno-63-2" href="#__codelineno-63-2"></a><span class="n">list</span><span class="p">.</span><span class="bp">sort</span><span class="p">()</span> <span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.zig</span><pre><span></span><code><a id="__codelineno-64-1" name="__codelineno-64-1" href="#__codelineno-64-1"></a><span class="c1">// 排序列表</span>
<a id="__codelineno-64-2" name="__codelineno-64-2" href="#__codelineno-64-2"></a><span class="n">std</span><span class="p">.</span><span class="n">sort</span><span class="p">.</span><span class="n">sort</span><span class="p">(</span><span class="kt">i32</span><span class="p">,</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="n">items</span><span class="p">,</span><span class="w"> </span><span class="p">{},</span><span class="w"> </span><span class="kr">comptime</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">sort</span><span class="p">.</span><span class="n">asc</span><span class="p">(</span><span class="kt">i32</span><span class="p">));</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">list.dart</span><pre><span></span><code><a id="__codelineno-65-1" name="__codelineno-65-1" href="#__codelineno-65-1"></a><span class="cm">/* 排序列表 */</span>
<a id="__codelineno-65-2" name="__codelineno-65-2" href="#__codelineno-65-2"></a><span class="n">list</span><span class="p">.</span><span class="n">sort</span><span class="p">();</span><span class="w"> </span><span class="c1">// 排序后,列表元素从小到大排列</span>
</code></pre></div>
</div>
</div>
</div>
<h2 id="432">4.3.2. &nbsp; 列表实现 *<a class="headerlink" href="#432" title="Permanent link">&para;</a></h2>
<p>为了帮助加深对列表的理解,我们在此提供一个简易版列表实现。需要关注三个核心点:</p>
<ul>
<li><strong>初始容量</strong>:选取一个合理的数组初始容量。在本示例中,我们选择 10 作为初始容量。</li>
<li><strong>数量记录</strong>:声明一个变量 size用于记录列表当前元素数量并随着元素插入和删除实时更新。根据此变量我们可以定位列表尾部以及判断是否需要扩容。</li>
<li><strong>扩容机制</strong>:插入元素时可能超出列表容量,此时需要扩容列表。扩容方法是根据扩容倍数创建一个更大的数组,并将当前数组的所有元素依次移动至新数组。在本示例中,我们规定每次将数组扩容至之前的 2 倍。</li>
</ul>
<p>本示例旨在帮助读者直观理解列表的工作机制。实际编程语言中,列表实现更加标准和复杂,各个参数的设定也非常有考究,例如初始容量、扩容倍数等。感兴趣的读者可以查阅源码进行学习。</p>
<div class="tabbed-set tabbed-alternate" data-tabs="7:11"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><input id="__tabbed_7_3" name="__tabbed_7" type="radio" /><input id="__tabbed_7_4" name="__tabbed_7" type="radio" /><input id="__tabbed_7_5" name="__tabbed_7" type="radio" /><input id="__tabbed_7_6" name="__tabbed_7" type="radio" /><input id="__tabbed_7_7" name="__tabbed_7" type="radio" /><input id="__tabbed_7_8" name="__tabbed_7" type="radio" /><input id="__tabbed_7_9" name="__tabbed_7" type="radio" /><input id="__tabbed_7_10" name="__tabbed_7" type="radio" /><input id="__tabbed_7_11" name="__tabbed_7" type="radio" /><div class="tabbed-labels"><label for="__tabbed_7_1">Java</label><label for="__tabbed_7_2">C++</label><label for="__tabbed_7_3">Python</label><label for="__tabbed_7_4">Go</label><label for="__tabbed_7_5">JavaScript</label><label for="__tabbed_7_6">TypeScript</label><label for="__tabbed_7_7">C</label><label for="__tabbed_7_8">C#</label><label for="__tabbed_7_9">Swift</label><label for="__tabbed_7_10">Zig</label><label for="__tabbed_7_11">Dart</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.java</span><pre><span></span><code><a id="__codelineno-66-1" name="__codelineno-66-1" href="#__codelineno-66-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-66-2" name="__codelineno-66-2" href="#__codelineno-66-2"></a><span class="kd">class</span> <span class="nc">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-3" name="__codelineno-66-3" href="#__codelineno-66-3"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-66-4" name="__codelineno-66-4" href="#__codelineno-66-4"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-66-5" name="__codelineno-66-5" href="#__codelineno-66-5"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-66-6" name="__codelineno-66-6" href="#__codelineno-66-6"></a><span class="w"> </span><span class="kd">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-66-7" name="__codelineno-66-7" href="#__codelineno-66-7"></a>
<a id="__codelineno-66-8" name="__codelineno-66-8" href="#__codelineno-66-8"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-66-9" name="__codelineno-66-9" href="#__codelineno-66-9"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="nf">MyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-10" name="__codelineno-66-10" href="#__codelineno-66-10"></a><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="o">[</span><span class="n">capacity</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-66-11" name="__codelineno-66-11" href="#__codelineno-66-11"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-12" name="__codelineno-66-12" href="#__codelineno-66-12"></a>
<a id="__codelineno-66-13" name="__codelineno-66-13" href="#__codelineno-66-13"></a><span class="w"> </span><span class="cm">/* 获取列表长度(即当前元素数量) */</span>
<a id="__codelineno-66-14" name="__codelineno-66-14" href="#__codelineno-66-14"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-15" name="__codelineno-66-15" href="#__codelineno-66-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">size</span><span class="p">;</span>
<a id="__codelineno-66-16" name="__codelineno-66-16" href="#__codelineno-66-16"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-17" name="__codelineno-66-17" href="#__codelineno-66-17"></a>
<a id="__codelineno-66-18" name="__codelineno-66-18" href="#__codelineno-66-18"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-66-19" name="__codelineno-66-19" href="#__codelineno-66-19"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-20" name="__codelineno-66-20" href="#__codelineno-66-20"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">capacity</span><span class="p">;</span>
<a id="__codelineno-66-21" name="__codelineno-66-21" href="#__codelineno-66-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-22" name="__codelineno-66-22" href="#__codelineno-66-22"></a>
<a id="__codelineno-66-23" name="__codelineno-66-23" href="#__codelineno-66-23"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-66-24" name="__codelineno-66-24" href="#__codelineno-66-24"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-25" name="__codelineno-66-25" href="#__codelineno-66-25"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-66-26" name="__codelineno-66-26" href="#__codelineno-66-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">)</span>
<a id="__codelineno-66-27" name="__codelineno-66-27" href="#__codelineno-66-27"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IndexOutOfBoundsException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-66-28" name="__codelineno-66-28" href="#__codelineno-66-28"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-66-29" name="__codelineno-66-29" href="#__codelineno-66-29"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-30" name="__codelineno-66-30" href="#__codelineno-66-30"></a>
<a id="__codelineno-66-31" name="__codelineno-66-31" href="#__codelineno-66-31"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-66-32" name="__codelineno-66-32" href="#__codelineno-66-32"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">set</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-33" name="__codelineno-66-33" href="#__codelineno-66-33"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">)</span>
<a id="__codelineno-66-34" name="__codelineno-66-34" href="#__codelineno-66-34"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IndexOutOfBoundsException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-66-35" name="__codelineno-66-35" href="#__codelineno-66-35"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-66-36" name="__codelineno-66-36" href="#__codelineno-66-36"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-37" name="__codelineno-66-37" href="#__codelineno-66-37"></a>
<a id="__codelineno-66-38" name="__codelineno-66-38" href="#__codelineno-66-38"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-66-39" name="__codelineno-66-39" href="#__codelineno-66-39"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-40" name="__codelineno-66-40" href="#__codelineno-66-40"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-66-41" name="__codelineno-66-41" href="#__codelineno-66-41"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">())</span>
<a id="__codelineno-66-42" name="__codelineno-66-42" href="#__codelineno-66-42"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-66-43" name="__codelineno-66-43" href="#__codelineno-66-43"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">size</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-66-44" name="__codelineno-66-44" href="#__codelineno-66-44"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-66-45" name="__codelineno-66-45" href="#__codelineno-66-45"></a><span class="w"> </span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-66-46" name="__codelineno-66-46" href="#__codelineno-66-46"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-47" name="__codelineno-66-47" href="#__codelineno-66-47"></a>
<a id="__codelineno-66-48" name="__codelineno-66-48" href="#__codelineno-66-48"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-66-49" name="__codelineno-66-49" href="#__codelineno-66-49"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">insert</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-50" name="__codelineno-66-50" href="#__codelineno-66-50"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">)</span>
<a id="__codelineno-66-51" name="__codelineno-66-51" href="#__codelineno-66-51"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IndexOutOfBoundsException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-66-52" name="__codelineno-66-52" href="#__codelineno-66-52"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-66-53" name="__codelineno-66-53" href="#__codelineno-66-53"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">())</span>
<a id="__codelineno-66-54" name="__codelineno-66-54" href="#__codelineno-66-54"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-66-55" name="__codelineno-66-55" href="#__codelineno-66-55"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-66-56" name="__codelineno-66-56" href="#__codelineno-66-56"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-57" name="__codelineno-66-57" href="#__codelineno-66-57"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-66-58" name="__codelineno-66-58" href="#__codelineno-66-58"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-59" name="__codelineno-66-59" href="#__codelineno-66-59"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-66-60" name="__codelineno-66-60" href="#__codelineno-66-60"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-66-61" name="__codelineno-66-61" href="#__codelineno-66-61"></a><span class="w"> </span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-66-62" name="__codelineno-66-62" href="#__codelineno-66-62"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-63" name="__codelineno-66-63" href="#__codelineno-66-63"></a>
<a id="__codelineno-66-64" name="__codelineno-66-64" href="#__codelineno-66-64"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-66-65" name="__codelineno-66-65" href="#__codelineno-66-65"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">remove</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-66" name="__codelineno-66-66" href="#__codelineno-66-66"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">)</span>
<a id="__codelineno-66-67" name="__codelineno-66-67" href="#__codelineno-66-67"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IndexOutOfBoundsException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-66-68" name="__codelineno-66-68" href="#__codelineno-66-68"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">index</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-66-69" name="__codelineno-66-69" href="#__codelineno-66-69"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-66-70" name="__codelineno-66-70" href="#__codelineno-66-70"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-71" name="__codelineno-66-71" href="#__codelineno-66-71"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-66-72" name="__codelineno-66-72" href="#__codelineno-66-72"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-73" name="__codelineno-66-73" href="#__codelineno-66-73"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-66-74" name="__codelineno-66-74" href="#__codelineno-66-74"></a><span class="w"> </span><span class="n">size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-66-75" name="__codelineno-66-75" href="#__codelineno-66-75"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-66-76" name="__codelineno-66-76" href="#__codelineno-66-76"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-66-77" name="__codelineno-66-77" href="#__codelineno-66-77"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-78" name="__codelineno-66-78" href="#__codelineno-66-78"></a>
<a id="__codelineno-66-79" name="__codelineno-66-79" href="#__codelineno-66-79"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-66-80" name="__codelineno-66-80" href="#__codelineno-66-80"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-81" name="__codelineno-66-81" href="#__codelineno-66-81"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-66-82" name="__codelineno-66-82" href="#__codelineno-66-82"></a><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">Arrays</span><span class="p">.</span><span class="na">copyOf</span><span class="p">(</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">extendRatio</span><span class="p">);</span>
<a id="__codelineno-66-83" name="__codelineno-66-83" href="#__codelineno-66-83"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-66-84" name="__codelineno-66-84" href="#__codelineno-66-84"></a><span class="w"> </span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="na">length</span><span class="p">;</span>
<a id="__codelineno-66-85" name="__codelineno-66-85" href="#__codelineno-66-85"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-86" name="__codelineno-66-86" href="#__codelineno-66-86"></a>
<a id="__codelineno-66-87" name="__codelineno-66-87" href="#__codelineno-66-87"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-66-88" name="__codelineno-66-88" href="#__codelineno-66-88"></a><span class="w"> </span><span class="kd">public</span><span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="nf">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-89" name="__codelineno-66-89" href="#__codelineno-66-89"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">();</span>
<a id="__codelineno-66-90" name="__codelineno-66-90" href="#__codelineno-66-90"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-66-91" name="__codelineno-66-91" href="#__codelineno-66-91"></a><span class="w"> </span><span class="kt">int</span><span class="o">[]</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="o">[</span><span class="n">size</span><span class="o">]</span><span class="p">;</span>
<a id="__codelineno-66-92" name="__codelineno-66-92" href="#__codelineno-66-92"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-66-93" name="__codelineno-66-93" href="#__codelineno-66-93"></a><span class="w"> </span><span class="n">nums</span><span class="o">[</span><span class="n">i</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a id="__codelineno-66-94" name="__codelineno-66-94" href="#__codelineno-66-94"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-95" name="__codelineno-66-95" href="#__codelineno-66-95"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-66-96" name="__codelineno-66-96" href="#__codelineno-66-96"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-66-97" name="__codelineno-66-97" href="#__codelineno-66-97"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.cpp</span><pre><span></span><code><a id="__codelineno-67-1" name="__codelineno-67-1" href="#__codelineno-67-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-67-2" name="__codelineno-67-2" href="#__codelineno-67-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-3" name="__codelineno-67-3" href="#__codelineno-67-3"></a><span class="w"> </span><span class="k">private</span><span class="o">:</span>
<a id="__codelineno-67-4" name="__codelineno-67-4" href="#__codelineno-67-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-67-5" name="__codelineno-67-5" href="#__codelineno-67-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">numsCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-67-6" name="__codelineno-67-6" href="#__codelineno-67-6"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">numsSize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-67-7" name="__codelineno-67-7" href="#__codelineno-67-7"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-67-8" name="__codelineno-67-8" href="#__codelineno-67-8"></a>
<a id="__codelineno-67-9" name="__codelineno-67-9" href="#__codelineno-67-9"></a><span class="w"> </span><span class="k">public</span><span class="o">:</span>
<a id="__codelineno-67-10" name="__codelineno-67-10" href="#__codelineno-67-10"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-67-11" name="__codelineno-67-11" href="#__codelineno-67-11"></a><span class="w"> </span><span class="n">MyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-12" name="__codelineno-67-12" href="#__codelineno-67-12"></a><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="n">numsCapacity</span><span class="p">];</span>
<a id="__codelineno-67-13" name="__codelineno-67-13" href="#__codelineno-67-13"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-14" name="__codelineno-67-14" href="#__codelineno-67-14"></a>
<a id="__codelineno-67-15" name="__codelineno-67-15" href="#__codelineno-67-15"></a><span class="w"> </span><span class="cm">/* 析构方法 */</span>
<a id="__codelineno-67-16" name="__codelineno-67-16" href="#__codelineno-67-16"></a><span class="w"> </span><span class="o">~</span><span class="n">MyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-17" name="__codelineno-67-17" href="#__codelineno-67-17"></a><span class="w"> </span><span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-67-18" name="__codelineno-67-18" href="#__codelineno-67-18"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-19" name="__codelineno-67-19" href="#__codelineno-67-19"></a>
<a id="__codelineno-67-20" name="__codelineno-67-20" href="#__codelineno-67-20"></a><span class="w"> </span><span class="cm">/* 获取列表长度(即当前元素数量)*/</span>
<a id="__codelineno-67-21" name="__codelineno-67-21" href="#__codelineno-67-21"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-22" name="__codelineno-67-22" href="#__codelineno-67-22"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">numsSize</span><span class="p">;</span>
<a id="__codelineno-67-23" name="__codelineno-67-23" href="#__codelineno-67-23"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-24" name="__codelineno-67-24" href="#__codelineno-67-24"></a>
<a id="__codelineno-67-25" name="__codelineno-67-25" href="#__codelineno-67-25"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-67-26" name="__codelineno-67-26" href="#__codelineno-67-26"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-27" name="__codelineno-67-27" href="#__codelineno-67-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">numsCapacity</span><span class="p">;</span>
<a id="__codelineno-67-28" name="__codelineno-67-28" href="#__codelineno-67-28"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-29" name="__codelineno-67-29" href="#__codelineno-67-29"></a>
<a id="__codelineno-67-30" name="__codelineno-67-30" href="#__codelineno-67-30"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-67-31" name="__codelineno-67-31" href="#__codelineno-67-31"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">get</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-32" name="__codelineno-67-32" href="#__codelineno-67-32"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-67-33" name="__codelineno-67-33" href="#__codelineno-67-33"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">())</span>
<a id="__codelineno-67-34" name="__codelineno-67-34" href="#__codelineno-67-34"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">out_of_range</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-67-35" name="__codelineno-67-35" href="#__codelineno-67-35"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-67-36" name="__codelineno-67-36" href="#__codelineno-67-36"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-37" name="__codelineno-67-37" href="#__codelineno-67-37"></a>
<a id="__codelineno-67-38" name="__codelineno-67-38" href="#__codelineno-67-38"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-67-39" name="__codelineno-67-39" href="#__codelineno-67-39"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">set</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-40" name="__codelineno-67-40" href="#__codelineno-67-40"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">())</span>
<a id="__codelineno-67-41" name="__codelineno-67-41" href="#__codelineno-67-41"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">out_of_range</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-67-42" name="__codelineno-67-42" href="#__codelineno-67-42"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-67-43" name="__codelineno-67-43" href="#__codelineno-67-43"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-44" name="__codelineno-67-44" href="#__codelineno-67-44"></a>
<a id="__codelineno-67-45" name="__codelineno-67-45" href="#__codelineno-67-45"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-67-46" name="__codelineno-67-46" href="#__codelineno-67-46"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">add</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-47" name="__codelineno-67-47" href="#__codelineno-67-47"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-67-48" name="__codelineno-67-48" href="#__codelineno-67-48"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">())</span>
<a id="__codelineno-67-49" name="__codelineno-67-49" href="#__codelineno-67-49"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-67-50" name="__codelineno-67-50" href="#__codelineno-67-50"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">size</span><span class="p">()]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-67-51" name="__codelineno-67-51" href="#__codelineno-67-51"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-67-52" name="__codelineno-67-52" href="#__codelineno-67-52"></a><span class="w"> </span><span class="n">numsSize</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-67-53" name="__codelineno-67-53" href="#__codelineno-67-53"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-54" name="__codelineno-67-54" href="#__codelineno-67-54"></a>
<a id="__codelineno-67-55" name="__codelineno-67-55" href="#__codelineno-67-55"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-67-56" name="__codelineno-67-56" href="#__codelineno-67-56"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">insert</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-57" name="__codelineno-67-57" href="#__codelineno-67-57"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">())</span>
<a id="__codelineno-67-58" name="__codelineno-67-58" href="#__codelineno-67-58"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">out_of_range</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-67-59" name="__codelineno-67-59" href="#__codelineno-67-59"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-67-60" name="__codelineno-67-60" href="#__codelineno-67-60"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">())</span>
<a id="__codelineno-67-61" name="__codelineno-67-61" href="#__codelineno-67-61"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-67-62" name="__codelineno-67-62" href="#__codelineno-67-62"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-67-63" name="__codelineno-67-63" href="#__codelineno-67-63"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-64" name="__codelineno-67-64" href="#__codelineno-67-64"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
<a id="__codelineno-67-65" name="__codelineno-67-65" href="#__codelineno-67-65"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-66" name="__codelineno-67-66" href="#__codelineno-67-66"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-67-67" name="__codelineno-67-67" href="#__codelineno-67-67"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-67-68" name="__codelineno-67-68" href="#__codelineno-67-68"></a><span class="w"> </span><span class="n">numsSize</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-67-69" name="__codelineno-67-69" href="#__codelineno-67-69"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-70" name="__codelineno-67-70" href="#__codelineno-67-70"></a>
<a id="__codelineno-67-71" name="__codelineno-67-71" href="#__codelineno-67-71"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-67-72" name="__codelineno-67-72" href="#__codelineno-67-72"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">remove</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-73" name="__codelineno-67-73" href="#__codelineno-67-73"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">size</span><span class="p">())</span>
<a id="__codelineno-67-74" name="__codelineno-67-74" href="#__codelineno-67-74"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">out_of_range</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-67-75" name="__codelineno-67-75" href="#__codelineno-67-75"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-67-76" name="__codelineno-67-76" href="#__codelineno-67-76"></a><span class="w"> </span><span class="c1">// 索引 i 之后的元素都向前移动一位</span>
<a id="__codelineno-67-77" name="__codelineno-67-77" href="#__codelineno-67-77"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-78" name="__codelineno-67-78" href="#__codelineno-67-78"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
<a id="__codelineno-67-79" name="__codelineno-67-79" href="#__codelineno-67-79"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-80" name="__codelineno-67-80" href="#__codelineno-67-80"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-67-81" name="__codelineno-67-81" href="#__codelineno-67-81"></a><span class="w"> </span><span class="n">numsSize</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-67-82" name="__codelineno-67-82" href="#__codelineno-67-82"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-67-83" name="__codelineno-67-83" href="#__codelineno-67-83"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-67-84" name="__codelineno-67-84" href="#__codelineno-67-84"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-85" name="__codelineno-67-85" href="#__codelineno-67-85"></a>
<a id="__codelineno-67-86" name="__codelineno-67-86" href="#__codelineno-67-86"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-67-87" name="__codelineno-67-87" href="#__codelineno-67-87"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-88" name="__codelineno-67-88" href="#__codelineno-67-88"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组</span>
<a id="__codelineno-67-89" name="__codelineno-67-89" href="#__codelineno-67-89"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">newCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">extendRatio</span><span class="p">;</span>
<a id="__codelineno-67-90" name="__codelineno-67-90" href="#__codelineno-67-90"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">tmp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-67-91" name="__codelineno-67-91" href="#__codelineno-67-91"></a><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="n">newCapacity</span><span class="p">];</span>
<a id="__codelineno-67-92" name="__codelineno-67-92" href="#__codelineno-67-92"></a><span class="w"> </span><span class="c1">// 将原数组中的所有元素复制到新数组</span>
<a id="__codelineno-67-93" name="__codelineno-67-93" href="#__codelineno-67-93"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">();</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-94" name="__codelineno-67-94" href="#__codelineno-67-94"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tmp</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a id="__codelineno-67-95" name="__codelineno-67-95" href="#__codelineno-67-95"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-96" name="__codelineno-67-96" href="#__codelineno-67-96"></a><span class="w"> </span><span class="c1">// 释放内存</span>
<a id="__codelineno-67-97" name="__codelineno-67-97" href="#__codelineno-67-97"></a><span class="w"> </span><span class="k">delete</span><span class="p">[]</span><span class="w"> </span><span class="n">tmp</span><span class="p">;</span>
<a id="__codelineno-67-98" name="__codelineno-67-98" href="#__codelineno-67-98"></a><span class="w"> </span><span class="n">numsCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">;</span>
<a id="__codelineno-67-99" name="__codelineno-67-99" href="#__codelineno-67-99"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-100" name="__codelineno-67-100" href="#__codelineno-67-100"></a>
<a id="__codelineno-67-101" name="__codelineno-67-101" href="#__codelineno-67-101"></a><span class="w"> </span><span class="cm">/* 将列表转换为 Vector 用于打印 */</span>
<a id="__codelineno-67-102" name="__codelineno-67-102" href="#__codelineno-67-102"></a><span class="w"> </span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">toVector</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-103" name="__codelineno-67-103" href="#__codelineno-67-103"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-67-104" name="__codelineno-67-104" href="#__codelineno-67-104"></a><span class="w"> </span><span class="n">vector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">vec</span><span class="p">(</span><span class="n">size</span><span class="p">());</span>
<a id="__codelineno-67-105" name="__codelineno-67-105" href="#__codelineno-67-105"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">();</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-67-106" name="__codelineno-67-106" href="#__codelineno-67-106"></a><span class="w"> </span><span class="n">vec</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a id="__codelineno-67-107" name="__codelineno-67-107" href="#__codelineno-67-107"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-108" name="__codelineno-67-108" href="#__codelineno-67-108"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">vec</span><span class="p">;</span>
<a id="__codelineno-67-109" name="__codelineno-67-109" href="#__codelineno-67-109"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-67-110" name="__codelineno-67-110" href="#__codelineno-67-110"></a><span class="p">};</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.py</span><pre><span></span><code><a id="__codelineno-68-1" name="__codelineno-68-1" href="#__codelineno-68-1"></a><span class="k">class</span> <span class="nc">MyList</span><span class="p">:</span>
<a id="__codelineno-68-2" name="__codelineno-68-2" href="#__codelineno-68-2"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;列表类简易实现&quot;&quot;&quot;</span>
<a id="__codelineno-68-3" name="__codelineno-68-3" href="#__codelineno-68-3"></a>
<a id="__codelineno-68-4" name="__codelineno-68-4" href="#__codelineno-68-4"></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<a id="__codelineno-68-5" name="__codelineno-68-5" href="#__codelineno-68-5"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;构造方法&quot;&quot;&quot;</span>
<a id="__codelineno-68-6" name="__codelineno-68-6" href="#__codelineno-68-6"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__capacity</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">10</span> <span class="c1"># 列表容量</span>
<a id="__codelineno-68-7" name="__codelineno-68-7" href="#__codelineno-68-7"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">:</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">__capacity</span> <span class="c1"># 数组(存储列表元素)</span>
<a id="__codelineno-68-8" name="__codelineno-68-8" href="#__codelineno-68-8"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># 列表长度(即当前元素数量)</span>
<a id="__codelineno-68-9" name="__codelineno-68-9" href="#__codelineno-68-9"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__extend_ratio</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">2</span> <span class="c1"># 每次列表扩容的倍数</span>
<a id="__codelineno-68-10" name="__codelineno-68-10" href="#__codelineno-68-10"></a>
<a id="__codelineno-68-11" name="__codelineno-68-11" href="#__codelineno-68-11"></a> <span class="k">def</span> <span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-68-12" name="__codelineno-68-12" href="#__codelineno-68-12"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;获取列表长度(即当前元素数量)&quot;&quot;&quot;</span>
<a id="__codelineno-68-13" name="__codelineno-68-13" href="#__codelineno-68-13"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span>
<a id="__codelineno-68-14" name="__codelineno-68-14" href="#__codelineno-68-14"></a>
<a id="__codelineno-68-15" name="__codelineno-68-15" href="#__codelineno-68-15"></a> <span class="k">def</span> <span class="nf">capacity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-68-16" name="__codelineno-68-16" href="#__codelineno-68-16"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;获取列表容量&quot;&quot;&quot;</span>
<a id="__codelineno-68-17" name="__codelineno-68-17" href="#__codelineno-68-17"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__capacity</span>
<a id="__codelineno-68-18" name="__codelineno-68-18" href="#__codelineno-68-18"></a>
<a id="__codelineno-68-19" name="__codelineno-68-19" href="#__codelineno-68-19"></a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-68-20" name="__codelineno-68-20" href="#__codelineno-68-20"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;访问元素&quot;&quot;&quot;</span>
<a id="__codelineno-68-21" name="__codelineno-68-21" href="#__codelineno-68-21"></a> <span class="c1"># 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-68-22" name="__codelineno-68-22" href="#__codelineno-68-22"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">:</span>
<a id="__codelineno-68-23" name="__codelineno-68-23" href="#__codelineno-68-23"></a> <span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-68-24" name="__codelineno-68-24" href="#__codelineno-68-24"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
<a id="__codelineno-68-25" name="__codelineno-68-25" href="#__codelineno-68-25"></a>
<a id="__codelineno-68-26" name="__codelineno-68-26" href="#__codelineno-68-26"></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-68-27" name="__codelineno-68-27" href="#__codelineno-68-27"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;更新元素&quot;&quot;&quot;</span>
<a id="__codelineno-68-28" name="__codelineno-68-28" href="#__codelineno-68-28"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">:</span>
<a id="__codelineno-68-29" name="__codelineno-68-29" href="#__codelineno-68-29"></a> <span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-68-30" name="__codelineno-68-30" href="#__codelineno-68-30"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="n">num</span>
<a id="__codelineno-68-31" name="__codelineno-68-31" href="#__codelineno-68-31"></a>
<a id="__codelineno-68-32" name="__codelineno-68-32" href="#__codelineno-68-32"></a> <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-68-33" name="__codelineno-68-33" href="#__codelineno-68-33"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;尾部添加元素&quot;&quot;&quot;</span>
<a id="__codelineno-68-34" name="__codelineno-68-34" href="#__codelineno-68-34"></a> <span class="c1"># 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-68-35" name="__codelineno-68-35" href="#__codelineno-68-35"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">capacity</span><span class="p">():</span>
<a id="__codelineno-68-36" name="__codelineno-68-36" href="#__codelineno-68-36"></a> <span class="bp">self</span><span class="o">.</span><span class="n">extend_capacity</span><span class="p">()</span>
<a id="__codelineno-68-37" name="__codelineno-68-37" href="#__codelineno-68-37"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">]</span> <span class="o">=</span> <span class="n">num</span>
<a id="__codelineno-68-38" name="__codelineno-68-38" href="#__codelineno-68-38"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-68-39" name="__codelineno-68-39" href="#__codelineno-68-39"></a>
<a id="__codelineno-68-40" name="__codelineno-68-40" href="#__codelineno-68-40"></a> <span class="k">def</span> <span class="nf">insert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-68-41" name="__codelineno-68-41" href="#__codelineno-68-41"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;中间插入元素&quot;&quot;&quot;</span>
<a id="__codelineno-68-42" name="__codelineno-68-42" href="#__codelineno-68-42"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">:</span>
<a id="__codelineno-68-43" name="__codelineno-68-43" href="#__codelineno-68-43"></a> <span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-68-44" name="__codelineno-68-44" href="#__codelineno-68-44"></a> <span class="c1"># 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-68-45" name="__codelineno-68-45" href="#__codelineno-68-45"></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">capacity</span><span class="p">():</span>
<a id="__codelineno-68-46" name="__codelineno-68-46" href="#__codelineno-68-46"></a> <span class="bp">self</span><span class="o">.</span><span class="n">extend_capacity</span><span class="p">()</span>
<a id="__codelineno-68-47" name="__codelineno-68-47" href="#__codelineno-68-47"></a> <span class="c1"># 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-68-48" name="__codelineno-68-48" href="#__codelineno-68-48"></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
<a id="__codelineno-68-49" name="__codelineno-68-49" href="#__codelineno-68-49"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
<a id="__codelineno-68-50" name="__codelineno-68-50" href="#__codelineno-68-50"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="n">num</span>
<a id="__codelineno-68-51" name="__codelineno-68-51" href="#__codelineno-68-51"></a> <span class="c1"># 更新元素数量</span>
<a id="__codelineno-68-52" name="__codelineno-68-52" href="#__codelineno-68-52"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-68-53" name="__codelineno-68-53" href="#__codelineno-68-53"></a>
<a id="__codelineno-68-54" name="__codelineno-68-54" href="#__codelineno-68-54"></a> <span class="k">def</span> <span class="nf">remove</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">int</span><span class="p">:</span>
<a id="__codelineno-68-55" name="__codelineno-68-55" href="#__codelineno-68-55"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;删除元素&quot;&quot;&quot;</span>
<a id="__codelineno-68-56" name="__codelineno-68-56" href="#__codelineno-68-56"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">:</span>
<a id="__codelineno-68-57" name="__codelineno-68-57" href="#__codelineno-68-57"></a> <span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-68-58" name="__codelineno-68-58" href="#__codelineno-68-58"></a> <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
<a id="__codelineno-68-59" name="__codelineno-68-59" href="#__codelineno-68-59"></a> <span class="c1"># 索引 i 之后的元素都向前移动一位</span>
<a id="__codelineno-68-60" name="__codelineno-68-60" href="#__codelineno-68-60"></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">):</span>
<a id="__codelineno-68-61" name="__codelineno-68-61" href="#__codelineno-68-61"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
<a id="__codelineno-68-62" name="__codelineno-68-62" href="#__codelineno-68-62"></a> <span class="c1"># 更新元素数量</span>
<a id="__codelineno-68-63" name="__codelineno-68-63" href="#__codelineno-68-63"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span> <span class="o">-=</span> <span class="mi">1</span>
<a id="__codelineno-68-64" name="__codelineno-68-64" href="#__codelineno-68-64"></a> <span class="c1"># 返回被删除元素</span>
<a id="__codelineno-68-65" name="__codelineno-68-65" href="#__codelineno-68-65"></a> <span class="k">return</span> <span class="n">num</span>
<a id="__codelineno-68-66" name="__codelineno-68-66" href="#__codelineno-68-66"></a>
<a id="__codelineno-68-67" name="__codelineno-68-67" href="#__codelineno-68-67"></a> <span class="k">def</span> <span class="nf">extend_capacity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
<a id="__codelineno-68-68" name="__codelineno-68-68" href="#__codelineno-68-68"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;列表扩容&quot;&quot;&quot;</span>
<a id="__codelineno-68-69" name="__codelineno-68-69" href="#__codelineno-68-69"></a> <span class="c1"># 新建一个长度为原数组 __extend_ratio 倍的新数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-68-70" name="__codelineno-68-70" href="#__codelineno-68-70"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span> <span class="o">+</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">capacity</span><span class="p">()</span> <span class="o">*</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__extend_ratio</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
<a id="__codelineno-68-71" name="__codelineno-68-71" href="#__codelineno-68-71"></a> <span class="c1"># 更新列表容量</span>
<a id="__codelineno-68-72" name="__codelineno-68-72" href="#__codelineno-68-72"></a> <span class="bp">self</span><span class="o">.</span><span class="n">__capacity</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">)</span>
<a id="__codelineno-68-73" name="__codelineno-68-73" href="#__codelineno-68-73"></a>
<a id="__codelineno-68-74" name="__codelineno-68-74" href="#__codelineno-68-74"></a> <span class="k">def</span> <span class="nf">to_array</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">list</span><span class="p">[</span><span class="nb">int</span><span class="p">]:</span>
<a id="__codelineno-68-75" name="__codelineno-68-75" href="#__codelineno-68-75"></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;返回有效长度的列表&quot;&quot;&quot;</span>
<a id="__codelineno-68-76" name="__codelineno-68-76" href="#__codelineno-68-76"></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__nums</span><span class="p">[:</span> <span class="bp">self</span><span class="o">.</span><span class="n">__size</span><span class="p">]</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.go</span><pre><span></span><code><a id="__codelineno-69-1" name="__codelineno-69-1" href="#__codelineno-69-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-69-2" name="__codelineno-69-2" href="#__codelineno-69-2"></a><span class="kd">type</span><span class="w"> </span><span class="nx">myList</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-3" name="__codelineno-69-3" href="#__codelineno-69-3"></a><span class="w"> </span><span class="nx">numsCapacity</span><span class="w"> </span><span class="kt">int</span>
<a id="__codelineno-69-4" name="__codelineno-69-4" href="#__codelineno-69-4"></a><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span>
<a id="__codelineno-69-5" name="__codelineno-69-5" href="#__codelineno-69-5"></a><span class="w"> </span><span class="nx">numsSize</span><span class="w"> </span><span class="kt">int</span>
<a id="__codelineno-69-6" name="__codelineno-69-6" href="#__codelineno-69-6"></a><span class="w"> </span><span class="nx">extendRatio</span><span class="w"> </span><span class="kt">int</span>
<a id="__codelineno-69-7" name="__codelineno-69-7" href="#__codelineno-69-7"></a><span class="p">}</span>
<a id="__codelineno-69-8" name="__codelineno-69-8" href="#__codelineno-69-8"></a>
<a id="__codelineno-69-9" name="__codelineno-69-9" href="#__codelineno-69-9"></a><span class="cm">/* 构造函数 */</span>
<a id="__codelineno-69-10" name="__codelineno-69-10" href="#__codelineno-69-10"></a><span class="kd">func</span><span class="w"> </span><span class="nx">newMyList</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-11" name="__codelineno-69-11" href="#__codelineno-69-11"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">myList</span><span class="p">{</span>
<a id="__codelineno-69-12" name="__codelineno-69-12" href="#__codelineno-69-12"></a><span class="w"> </span><span class="nx">numsCapacity</span><span class="p">:</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-69-13" name="__codelineno-69-13" href="#__codelineno-69-13"></a><span class="w"> </span><span class="nx">nums</span><span class="p">:</span><span class="w"> </span><span class="nb">make</span><span class="p">([]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">),</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-69-14" name="__codelineno-69-14" href="#__codelineno-69-14"></a><span class="w"> </span><span class="nx">numsSize</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-69-15" name="__codelineno-69-15" href="#__codelineno-69-15"></a><span class="w"> </span><span class="nx">extendRatio</span><span class="p">:</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-69-16" name="__codelineno-69-16" href="#__codelineno-69-16"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-17" name="__codelineno-69-17" href="#__codelineno-69-17"></a><span class="p">}</span>
<a id="__codelineno-69-18" name="__codelineno-69-18" href="#__codelineno-69-18"></a>
<a id="__codelineno-69-19" name="__codelineno-69-19" href="#__codelineno-69-19"></a><span class="cm">/* 获取列表长度(即当前元素数量) */</span>
<a id="__codelineno-69-20" name="__codelineno-69-20" href="#__codelineno-69-20"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-21" name="__codelineno-69-21" href="#__codelineno-69-21"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span>
<a id="__codelineno-69-22" name="__codelineno-69-22" href="#__codelineno-69-22"></a><span class="p">}</span>
<a id="__codelineno-69-23" name="__codelineno-69-23" href="#__codelineno-69-23"></a>
<a id="__codelineno-69-24" name="__codelineno-69-24" href="#__codelineno-69-24"></a><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-69-25" name="__codelineno-69-25" href="#__codelineno-69-25"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-26" name="__codelineno-69-26" href="#__codelineno-69-26"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsCapacity</span>
<a id="__codelineno-69-27" name="__codelineno-69-27" href="#__codelineno-69-27"></a><span class="p">}</span>
<a id="__codelineno-69-28" name="__codelineno-69-28" href="#__codelineno-69-28"></a>
<a id="__codelineno-69-29" name="__codelineno-69-29" href="#__codelineno-69-29"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-69-30" name="__codelineno-69-30" href="#__codelineno-69-30"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">get</span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-31" name="__codelineno-69-31" href="#__codelineno-69-31"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-69-32" name="__codelineno-69-32" href="#__codelineno-69-32"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="p">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-33" name="__codelineno-69-33" href="#__codelineno-69-33"></a><span class="w"> </span><span class="nb">panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-69-34" name="__codelineno-69-34" href="#__codelineno-69-34"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-35" name="__codelineno-69-35" href="#__codelineno-69-35"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span>
<a id="__codelineno-69-36" name="__codelineno-69-36" href="#__codelineno-69-36"></a><span class="p">}</span>
<a id="__codelineno-69-37" name="__codelineno-69-37" href="#__codelineno-69-37"></a>
<a id="__codelineno-69-38" name="__codelineno-69-38" href="#__codelineno-69-38"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-69-39" name="__codelineno-69-39" href="#__codelineno-69-39"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-40" name="__codelineno-69-40" href="#__codelineno-69-40"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="p">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-41" name="__codelineno-69-41" href="#__codelineno-69-41"></a><span class="w"> </span><span class="nb">panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-69-42" name="__codelineno-69-42" href="#__codelineno-69-42"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-43" name="__codelineno-69-43" href="#__codelineno-69-43"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">num</span>
<a id="__codelineno-69-44" name="__codelineno-69-44" href="#__codelineno-69-44"></a><span class="p">}</span>
<a id="__codelineno-69-45" name="__codelineno-69-45" href="#__codelineno-69-45"></a>
<a id="__codelineno-69-46" name="__codelineno-69-46" href="#__codelineno-69-46"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-69-47" name="__codelineno-69-47" href="#__codelineno-69-47"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-48" name="__codelineno-69-48" href="#__codelineno-69-48"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-69-49" name="__codelineno-69-49" href="#__codelineno-69-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsCapacity</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-50" name="__codelineno-69-50" href="#__codelineno-69-50"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">()</span>
<a id="__codelineno-69-51" name="__codelineno-69-51" href="#__codelineno-69-51"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-52" name="__codelineno-69-52" href="#__codelineno-69-52"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">num</span>
<a id="__codelineno-69-53" name="__codelineno-69-53" href="#__codelineno-69-53"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-69-54" name="__codelineno-69-54" href="#__codelineno-69-54"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="o">++</span>
<a id="__codelineno-69-55" name="__codelineno-69-55" href="#__codelineno-69-55"></a><span class="p">}</span>
<a id="__codelineno-69-56" name="__codelineno-69-56" href="#__codelineno-69-56"></a>
<a id="__codelineno-69-57" name="__codelineno-69-57" href="#__codelineno-69-57"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-69-58" name="__codelineno-69-58" href="#__codelineno-69-58"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">num</span><span class="p">,</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-59" name="__codelineno-69-59" href="#__codelineno-69-59"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="p">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-60" name="__codelineno-69-60" href="#__codelineno-69-60"></a><span class="w"> </span><span class="nb">panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-69-61" name="__codelineno-69-61" href="#__codelineno-69-61"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-62" name="__codelineno-69-62" href="#__codelineno-69-62"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-69-63" name="__codelineno-69-63" href="#__codelineno-69-63"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsCapacity</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-64" name="__codelineno-69-64" href="#__codelineno-69-64"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">()</span>
<a id="__codelineno-69-65" name="__codelineno-69-65" href="#__codelineno-69-65"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-66" name="__codelineno-69-66" href="#__codelineno-69-66"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-69-67" name="__codelineno-69-67" href="#__codelineno-69-67"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-68" name="__codelineno-69-68" href="#__codelineno-69-68"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span>
<a id="__codelineno-69-69" name="__codelineno-69-69" href="#__codelineno-69-69"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-70" name="__codelineno-69-70" href="#__codelineno-69-70"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">num</span>
<a id="__codelineno-69-71" name="__codelineno-69-71" href="#__codelineno-69-71"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-69-72" name="__codelineno-69-72" href="#__codelineno-69-72"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="o">++</span>
<a id="__codelineno-69-73" name="__codelineno-69-73" href="#__codelineno-69-73"></a><span class="p">}</span>
<a id="__codelineno-69-74" name="__codelineno-69-74" href="#__codelineno-69-74"></a>
<a id="__codelineno-69-75" name="__codelineno-69-75" href="#__codelineno-69-75"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-69-76" name="__codelineno-69-76" href="#__codelineno-69-76"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-77" name="__codelineno-69-77" href="#__codelineno-69-77"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="p">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-78" name="__codelineno-69-78" href="#__codelineno-69-78"></a><span class="w"> </span><span class="nb">panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-69-79" name="__codelineno-69-79" href="#__codelineno-69-79"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-80" name="__codelineno-69-80" href="#__codelineno-69-80"></a><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span>
<a id="__codelineno-69-81" name="__codelineno-69-81" href="#__codelineno-69-81"></a><span class="w"> </span><span class="c1">// 索引 i 之后的元素都向前移动一位</span>
<a id="__codelineno-69-82" name="__codelineno-69-82" href="#__codelineno-69-82"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="p">&lt;</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-83" name="__codelineno-69-83" href="#__codelineno-69-83"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span>
<a id="__codelineno-69-84" name="__codelineno-69-84" href="#__codelineno-69-84"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-69-85" name="__codelineno-69-85" href="#__codelineno-69-85"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-69-86" name="__codelineno-69-86" href="#__codelineno-69-86"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="o">--</span>
<a id="__codelineno-69-87" name="__codelineno-69-87" href="#__codelineno-69-87"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-69-88" name="__codelineno-69-88" href="#__codelineno-69-88"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span>
<a id="__codelineno-69-89" name="__codelineno-69-89" href="#__codelineno-69-89"></a><span class="p">}</span>
<a id="__codelineno-69-90" name="__codelineno-69-90" href="#__codelineno-69-90"></a>
<a id="__codelineno-69-91" name="__codelineno-69-91" href="#__codelineno-69-91"></a><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-69-92" name="__codelineno-69-92" href="#__codelineno-69-92"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-93" name="__codelineno-69-93" href="#__codelineno-69-93"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-69-94" name="__codelineno-69-94" href="#__codelineno-69-94"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">append</span><span class="p">(</span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">,</span><span class="w"> </span><span class="nb">make</span><span class="p">([]</span><span class="kt">int</span><span class="p">,</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsCapacity</span><span class="o">*</span><span class="p">(</span><span class="nx">l</span><span class="p">.</span><span class="nx">extendRatio</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span><span class="o">...</span><span class="p">)</span>
<a id="__codelineno-69-95" name="__codelineno-69-95" href="#__codelineno-69-95"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-69-96" name="__codelineno-69-96" href="#__codelineno-69-96"></a><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">numsCapacity</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">)</span>
<a id="__codelineno-69-97" name="__codelineno-69-97" href="#__codelineno-69-97"></a><span class="p">}</span>
<a id="__codelineno-69-98" name="__codelineno-69-98" href="#__codelineno-69-98"></a>
<a id="__codelineno-69-99" name="__codelineno-69-99" href="#__codelineno-69-99"></a><span class="cm">/* 返回有效长度的列表 */</span>
<a id="__codelineno-69-100" name="__codelineno-69-100" href="#__codelineno-69-100"></a><span class="kd">func</span><span class="w"> </span><span class="p">(</span><span class="nx">l</span><span class="w"> </span><span class="o">*</span><span class="nx">myList</span><span class="p">)</span><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">[]</span><span class="kt">int</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-69-101" name="__codelineno-69-101" href="#__codelineno-69-101"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-69-102" name="__codelineno-69-102" href="#__codelineno-69-102"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">l</span><span class="p">.</span><span class="nx">nums</span><span class="p">[:</span><span class="nx">l</span><span class="p">.</span><span class="nx">numsSize</span><span class="p">]</span>
<a id="__codelineno-69-103" name="__codelineno-69-103" href="#__codelineno-69-103"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.js</span><pre><span></span><code><a id="__codelineno-70-1" name="__codelineno-70-1" href="#__codelineno-70-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-70-2" name="__codelineno-70-2" href="#__codelineno-70-2"></a><span class="kd">class</span><span class="w"> </span><span class="nx">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-3" name="__codelineno-70-3" href="#__codelineno-70-3"></a><span class="w"> </span><span class="err">#</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">();</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-70-4" name="__codelineno-70-4" href="#__codelineno-70-4"></a><span class="w"> </span><span class="err">#</span><span class="nx">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-70-5" name="__codelineno-70-5" href="#__codelineno-70-5"></a><span class="w"> </span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-70-6" name="__codelineno-70-6" href="#__codelineno-70-6"></a><span class="w"> </span><span class="err">#</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-70-7" name="__codelineno-70-7" href="#__codelineno-70-7"></a>
<a id="__codelineno-70-8" name="__codelineno-70-8" href="#__codelineno-70-8"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-70-9" name="__codelineno-70-9" href="#__codelineno-70-9"></a><span class="w"> </span><span class="kr">constructor</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-10" name="__codelineno-70-10" href="#__codelineno-70-10"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">);</span>
<a id="__codelineno-70-11" name="__codelineno-70-11" href="#__codelineno-70-11"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-12" name="__codelineno-70-12" href="#__codelineno-70-12"></a>
<a id="__codelineno-70-13" name="__codelineno-70-13" href="#__codelineno-70-13"></a><span class="w"> </span><span class="cm">/* 获取列表长度(即当前元素数量)*/</span>
<a id="__codelineno-70-14" name="__codelineno-70-14" href="#__codelineno-70-14"></a><span class="w"> </span><span class="nx">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-15" name="__codelineno-70-15" href="#__codelineno-70-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">;</span>
<a id="__codelineno-70-16" name="__codelineno-70-16" href="#__codelineno-70-16"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-17" name="__codelineno-70-17" href="#__codelineno-70-17"></a>
<a id="__codelineno-70-18" name="__codelineno-70-18" href="#__codelineno-70-18"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-70-19" name="__codelineno-70-19" href="#__codelineno-70-19"></a><span class="w"> </span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-20" name="__codelineno-70-20" href="#__codelineno-70-20"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">;</span>
<a id="__codelineno-70-21" name="__codelineno-70-21" href="#__codelineno-70-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-22" name="__codelineno-70-22" href="#__codelineno-70-22"></a>
<a id="__codelineno-70-23" name="__codelineno-70-23" href="#__codelineno-70-23"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-70-24" name="__codelineno-70-24" href="#__codelineno-70-24"></a><span class="w"> </span><span class="nx">get</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-25" name="__codelineno-70-25" href="#__codelineno-70-25"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-70-26" name="__codelineno-70-26" href="#__codelineno-70-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-70-27" name="__codelineno-70-27" href="#__codelineno-70-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-70-28" name="__codelineno-70-28" href="#__codelineno-70-28"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-29" name="__codelineno-70-29" href="#__codelineno-70-29"></a>
<a id="__codelineno-70-30" name="__codelineno-70-30" href="#__codelineno-70-30"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-70-31" name="__codelineno-70-31" href="#__codelineno-70-31"></a><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-32" name="__codelineno-70-32" href="#__codelineno-70-32"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-70-33" name="__codelineno-70-33" href="#__codelineno-70-33"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-70-34" name="__codelineno-70-34" href="#__codelineno-70-34"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-35" name="__codelineno-70-35" href="#__codelineno-70-35"></a>
<a id="__codelineno-70-36" name="__codelineno-70-36" href="#__codelineno-70-36"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-70-37" name="__codelineno-70-37" href="#__codelineno-70-37"></a><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-38" name="__codelineno-70-38" href="#__codelineno-70-38"></a><span class="w"> </span><span class="c1">// 如果长度等于容量,则需要扩容</span>
<a id="__codelineno-70-39" name="__codelineno-70-39" href="#__codelineno-70-39"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-40" name="__codelineno-70-40" href="#__codelineno-70-40"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-70-41" name="__codelineno-70-41" href="#__codelineno-70-41"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-42" name="__codelineno-70-42" href="#__codelineno-70-42"></a><span class="w"> </span><span class="c1">// 将新元素添加到列表尾部</span>
<a id="__codelineno-70-43" name="__codelineno-70-43" href="#__codelineno-70-43"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-70-44" name="__codelineno-70-44" href="#__codelineno-70-44"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-70-45" name="__codelineno-70-45" href="#__codelineno-70-45"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-46" name="__codelineno-70-46" href="#__codelineno-70-46"></a>
<a id="__codelineno-70-47" name="__codelineno-70-47" href="#__codelineno-70-47"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-70-48" name="__codelineno-70-48" href="#__codelineno-70-48"></a><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">index</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-49" name="__codelineno-70-49" href="#__codelineno-70-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-70-50" name="__codelineno-70-50" href="#__codelineno-70-50"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-70-51" name="__codelineno-70-51" href="#__codelineno-70-51"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-52" name="__codelineno-70-52" href="#__codelineno-70-52"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-70-53" name="__codelineno-70-53" href="#__codelineno-70-53"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-54" name="__codelineno-70-54" href="#__codelineno-70-54"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-70-55" name="__codelineno-70-55" href="#__codelineno-70-55"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-56" name="__codelineno-70-56" href="#__codelineno-70-56"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<a id="__codelineno-70-57" name="__codelineno-70-57" href="#__codelineno-70-57"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-58" name="__codelineno-70-58" href="#__codelineno-70-58"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-70-59" name="__codelineno-70-59" href="#__codelineno-70-59"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-70-60" name="__codelineno-70-60" href="#__codelineno-70-60"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-70-61" name="__codelineno-70-61" href="#__codelineno-70-61"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-62" name="__codelineno-70-62" href="#__codelineno-70-62"></a>
<a id="__codelineno-70-63" name="__codelineno-70-63" href="#__codelineno-70-63"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-70-64" name="__codelineno-70-64" href="#__codelineno-70-64"></a><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-65" name="__codelineno-70-65" href="#__codelineno-70-65"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-70-66" name="__codelineno-70-66" href="#__codelineno-70-66"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-70-67" name="__codelineno-70-67" href="#__codelineno-70-67"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-70-68" name="__codelineno-70-68" href="#__codelineno-70-68"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-69" name="__codelineno-70-69" href="#__codelineno-70-69"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
<a id="__codelineno-70-70" name="__codelineno-70-70" href="#__codelineno-70-70"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-71" name="__codelineno-70-71" href="#__codelineno-70-71"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-70-72" name="__codelineno-70-72" href="#__codelineno-70-72"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-70-73" name="__codelineno-70-73" href="#__codelineno-70-73"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-70-74" name="__codelineno-70-74" href="#__codelineno-70-74"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-70-75" name="__codelineno-70-75" href="#__codelineno-70-75"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-76" name="__codelineno-70-76" href="#__codelineno-70-76"></a>
<a id="__codelineno-70-77" name="__codelineno-70-77" href="#__codelineno-70-77"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-70-78" name="__codelineno-70-78" href="#__codelineno-70-78"></a><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-79" name="__codelineno-70-79" href="#__codelineno-70-79"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-70-80" name="__codelineno-70-80" href="#__codelineno-70-80"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span>
<a id="__codelineno-70-81" name="__codelineno-70-81" href="#__codelineno-70-81"></a><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">))</span>
<a id="__codelineno-70-82" name="__codelineno-70-82" href="#__codelineno-70-82"></a><span class="w"> </span><span class="p">);</span>
<a id="__codelineno-70-83" name="__codelineno-70-83" href="#__codelineno-70-83"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-70-84" name="__codelineno-70-84" href="#__codelineno-70-84"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="err">#</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<a id="__codelineno-70-85" name="__codelineno-70-85" href="#__codelineno-70-85"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-86" name="__codelineno-70-86" href="#__codelineno-70-86"></a>
<a id="__codelineno-70-87" name="__codelineno-70-87" href="#__codelineno-70-87"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-70-88" name="__codelineno-70-88" href="#__codelineno-70-88"></a><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-89" name="__codelineno-70-89" href="#__codelineno-70-89"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">size</span><span class="p">();</span>
<a id="__codelineno-70-90" name="__codelineno-70-90" href="#__codelineno-70-90"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-70-91" name="__codelineno-70-91" href="#__codelineno-70-91"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">size</span><span class="p">);</span>
<a id="__codelineno-70-92" name="__codelineno-70-92" href="#__codelineno-70-92"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-70-93" name="__codelineno-70-93" href="#__codelineno-70-93"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<a id="__codelineno-70-94" name="__codelineno-70-94" href="#__codelineno-70-94"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-95" name="__codelineno-70-95" href="#__codelineno-70-95"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
<a id="__codelineno-70-96" name="__codelineno-70-96" href="#__codelineno-70-96"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-70-97" name="__codelineno-70-97" href="#__codelineno-70-97"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.ts</span><pre><span></span><code><a id="__codelineno-71-1" name="__codelineno-71-1" href="#__codelineno-71-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-71-2" name="__codelineno-71-2" href="#__codelineno-71-2"></a><span class="kd">class</span><span class="w"> </span><span class="nx">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-3" name="__codelineno-71-3" href="#__codelineno-71-3"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">nums</span><span class="o">:</span><span class="w"> </span><span class="kt">Array</span><span class="o">&lt;</span><span class="kt">number</span><span class="o">&gt;</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-71-4" name="__codelineno-71-4" href="#__codelineno-71-4"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">_capacity</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-71-5" name="__codelineno-71-5" href="#__codelineno-71-5"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">_size</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-71-6" name="__codelineno-71-6" href="#__codelineno-71-6"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="nx">extendRatio</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-71-7" name="__codelineno-71-7" href="#__codelineno-71-7"></a>
<a id="__codelineno-71-8" name="__codelineno-71-8" href="#__codelineno-71-8"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-71-9" name="__codelineno-71-9" href="#__codelineno-71-9"></a><span class="w"> </span><span class="kr">constructor</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-10" name="__codelineno-71-10" href="#__codelineno-71-10"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">);</span>
<a id="__codelineno-71-11" name="__codelineno-71-11" href="#__codelineno-71-11"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-12" name="__codelineno-71-12" href="#__codelineno-71-12"></a>
<a id="__codelineno-71-13" name="__codelineno-71-13" href="#__codelineno-71-13"></a><span class="w"> </span><span class="cm">/* 获取列表长度(即当前元素数量)*/</span>
<a id="__codelineno-71-14" name="__codelineno-71-14" href="#__codelineno-71-14"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">size</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-15" name="__codelineno-71-15" href="#__codelineno-71-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">;</span>
<a id="__codelineno-71-16" name="__codelineno-71-16" href="#__codelineno-71-16"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-17" name="__codelineno-71-17" href="#__codelineno-71-17"></a>
<a id="__codelineno-71-18" name="__codelineno-71-18" href="#__codelineno-71-18"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-71-19" name="__codelineno-71-19" href="#__codelineno-71-19"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">capacity</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-20" name="__codelineno-71-20" href="#__codelineno-71-20"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">;</span>
<a id="__codelineno-71-21" name="__codelineno-71-21" href="#__codelineno-71-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-22" name="__codelineno-71-22" href="#__codelineno-71-22"></a>
<a id="__codelineno-71-23" name="__codelineno-71-23" href="#__codelineno-71-23"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-71-24" name="__codelineno-71-24" href="#__codelineno-71-24"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">get</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-25" name="__codelineno-71-25" href="#__codelineno-71-25"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-71-26" name="__codelineno-71-26" href="#__codelineno-71-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-71-27" name="__codelineno-71-27" href="#__codelineno-71-27"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-71-28" name="__codelineno-71-28" href="#__codelineno-71-28"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-29" name="__codelineno-71-29" href="#__codelineno-71-29"></a>
<a id="__codelineno-71-30" name="__codelineno-71-30" href="#__codelineno-71-30"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-71-31" name="__codelineno-71-31" href="#__codelineno-71-31"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">set</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-32" name="__codelineno-71-32" href="#__codelineno-71-32"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-71-33" name="__codelineno-71-33" href="#__codelineno-71-33"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-71-34" name="__codelineno-71-34" href="#__codelineno-71-34"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-35" name="__codelineno-71-35" href="#__codelineno-71-35"></a>
<a id="__codelineno-71-36" name="__codelineno-71-36" href="#__codelineno-71-36"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-71-37" name="__codelineno-71-37" href="#__codelineno-71-37"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">add</span><span class="p">(</span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-38" name="__codelineno-71-38" href="#__codelineno-71-38"></a><span class="w"> </span><span class="c1">// 如果长度等于容量,则需要扩容</span>
<a id="__codelineno-71-39" name="__codelineno-71-39" href="#__codelineno-71-39"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">)</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-71-40" name="__codelineno-71-40" href="#__codelineno-71-40"></a><span class="w"> </span><span class="c1">// 将新元素添加到列表尾部</span>
<a id="__codelineno-71-41" name="__codelineno-71-41" href="#__codelineno-71-41"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-71-42" name="__codelineno-71-42" href="#__codelineno-71-42"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-71-43" name="__codelineno-71-43" href="#__codelineno-71-43"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-44" name="__codelineno-71-44" href="#__codelineno-71-44"></a>
<a id="__codelineno-71-45" name="__codelineno-71-45" href="#__codelineno-71-45"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-71-46" name="__codelineno-71-46" href="#__codelineno-71-46"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">insert</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-47" name="__codelineno-71-47" href="#__codelineno-71-47"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-71-48" name="__codelineno-71-48" href="#__codelineno-71-48"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-71-49" name="__codelineno-71-49" href="#__codelineno-71-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-50" name="__codelineno-71-50" href="#__codelineno-71-50"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-71-51" name="__codelineno-71-51" href="#__codelineno-71-51"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-52" name="__codelineno-71-52" href="#__codelineno-71-52"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-71-53" name="__codelineno-71-53" href="#__codelineno-71-53"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-54" name="__codelineno-71-54" href="#__codelineno-71-54"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">];</span>
<a id="__codelineno-71-55" name="__codelineno-71-55" href="#__codelineno-71-55"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-56" name="__codelineno-71-56" href="#__codelineno-71-56"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-71-57" name="__codelineno-71-57" href="#__codelineno-71-57"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-71-58" name="__codelineno-71-58" href="#__codelineno-71-58"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-71-59" name="__codelineno-71-59" href="#__codelineno-71-59"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-60" name="__codelineno-71-60" href="#__codelineno-71-60"></a>
<a id="__codelineno-71-61" name="__codelineno-71-61" href="#__codelineno-71-61"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-71-62" name="__codelineno-71-62" href="#__codelineno-71-62"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">remove</span><span class="p">(</span><span class="nx">index</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">)</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-63" name="__codelineno-71-63" href="#__codelineno-71-63"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="nx">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-71-64" name="__codelineno-71-64" href="#__codelineno-71-64"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">index</span><span class="p">];</span>
<a id="__codelineno-71-65" name="__codelineno-71-65" href="#__codelineno-71-65"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-71-66" name="__codelineno-71-66" href="#__codelineno-71-66"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">index</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"> </span><span class="nx">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-67" name="__codelineno-71-67" href="#__codelineno-71-67"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">[</span><span class="nx">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
<a id="__codelineno-71-68" name="__codelineno-71-68" href="#__codelineno-71-68"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-69" name="__codelineno-71-69" href="#__codelineno-71-69"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-71-70" name="__codelineno-71-70" href="#__codelineno-71-70"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-71-71" name="__codelineno-71-71" href="#__codelineno-71-71"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-71-72" name="__codelineno-71-72" href="#__codelineno-71-72"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">num</span><span class="p">;</span>
<a id="__codelineno-71-73" name="__codelineno-71-73" href="#__codelineno-71-73"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-74" name="__codelineno-71-74" href="#__codelineno-71-74"></a>
<a id="__codelineno-71-75" name="__codelineno-71-75" href="#__codelineno-71-75"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-71-76" name="__codelineno-71-76" href="#__codelineno-71-76"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">extendCapacity</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="ow">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-77" name="__codelineno-71-77" href="#__codelineno-71-77"></a><span class="w"> </span><span class="c1">// 新建一个长度为 size 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-71-78" name="__codelineno-71-78" href="#__codelineno-71-78"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">.</span><span class="nx">concat</span><span class="p">(</span>
<a id="__codelineno-71-79" name="__codelineno-71-79" href="#__codelineno-71-79"></a><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="nx">extendRatio</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">))</span>
<a id="__codelineno-71-80" name="__codelineno-71-80" href="#__codelineno-71-80"></a><span class="w"> </span><span class="p">);</span>
<a id="__codelineno-71-81" name="__codelineno-71-81" href="#__codelineno-71-81"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-71-82" name="__codelineno-71-82" href="#__codelineno-71-82"></a><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">nums</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
<a id="__codelineno-71-83" name="__codelineno-71-83" href="#__codelineno-71-83"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-84" name="__codelineno-71-84" href="#__codelineno-71-84"></a>
<a id="__codelineno-71-85" name="__codelineno-71-85" href="#__codelineno-71-85"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-71-86" name="__codelineno-71-86" href="#__codelineno-71-86"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nx">toArray</span><span class="p">()</span><span class="o">:</span><span class="w"> </span><span class="kt">number</span><span class="p">[]</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-87" name="__codelineno-71-87" href="#__codelineno-71-87"></a><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">size</span><span class="p">();</span>
<a id="__codelineno-71-88" name="__codelineno-71-88" href="#__codelineno-71-88"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-71-89" name="__codelineno-71-89" href="#__codelineno-71-89"></a><span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">size</span><span class="p">);</span>
<a id="__codelineno-71-90" name="__codelineno-71-90" href="#__codelineno-71-90"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">size</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-71-91" name="__codelineno-71-91" href="#__codelineno-71-91"></a><span class="w"> </span><span class="nx">nums</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">this</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
<a id="__codelineno-71-92" name="__codelineno-71-92" href="#__codelineno-71-92"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-93" name="__codelineno-71-93" href="#__codelineno-71-93"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">nums</span><span class="p">;</span>
<a id="__codelineno-71-94" name="__codelineno-71-94" href="#__codelineno-71-94"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-71-95" name="__codelineno-71-95" href="#__codelineno-71-95"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.c</span><pre><span></span><code><a id="__codelineno-72-1" name="__codelineno-72-1" href="#__codelineno-72-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-72-2" name="__codelineno-72-2" href="#__codelineno-72-2"></a><span class="k">struct</span><span class="w"> </span><span class="nc">myList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-3" name="__codelineno-72-3" href="#__codelineno-72-3"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">nums</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-72-4" name="__codelineno-72-4" href="#__codelineno-72-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">capacity</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-72-5" name="__codelineno-72-5" href="#__codelineno-72-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表大小</span>
<a id="__codelineno-72-6" name="__codelineno-72-6" href="#__codelineno-72-6"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">extendRatio</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表每次扩容的倍数</span>
<a id="__codelineno-72-7" name="__codelineno-72-7" href="#__codelineno-72-7"></a><span class="p">};</span>
<a id="__codelineno-72-8" name="__codelineno-72-8" href="#__codelineno-72-8"></a>
<a id="__codelineno-72-9" name="__codelineno-72-9" href="#__codelineno-72-9"></a><span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">myList</span><span class="w"> </span><span class="n">myList</span><span class="p">;</span>
<a id="__codelineno-72-10" name="__codelineno-72-10" href="#__codelineno-72-10"></a>
<a id="__codelineno-72-11" name="__codelineno-72-11" href="#__codelineno-72-11"></a><span class="cm">/* 构造函数 */</span>
<a id="__codelineno-72-12" name="__codelineno-72-12" href="#__codelineno-72-12"></a><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="nf">newMyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-13" name="__codelineno-72-13" href="#__codelineno-72-13"></a><span class="w"> </span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">myList</span><span class="p">));</span>
<a id="__codelineno-72-14" name="__codelineno-72-14" href="#__codelineno-72-14"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span>
<a id="__codelineno-72-15" name="__codelineno-72-15" href="#__codelineno-72-15"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">capacity</span><span class="p">);</span>
<a id="__codelineno-72-16" name="__codelineno-72-16" href="#__codelineno-72-16"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
<a id="__codelineno-72-17" name="__codelineno-72-17" href="#__codelineno-72-17"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
<a id="__codelineno-72-18" name="__codelineno-72-18" href="#__codelineno-72-18"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="p">;</span>
<a id="__codelineno-72-19" name="__codelineno-72-19" href="#__codelineno-72-19"></a><span class="p">}</span>
<a id="__codelineno-72-20" name="__codelineno-72-20" href="#__codelineno-72-20"></a>
<a id="__codelineno-72-21" name="__codelineno-72-21" href="#__codelineno-72-21"></a><span class="cm">/* 析构函数 */</span>
<a id="__codelineno-72-22" name="__codelineno-72-22" href="#__codelineno-72-22"></a><span class="kt">void</span><span class="w"> </span><span class="nf">delMyList</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-23" name="__codelineno-72-23" href="#__codelineno-72-23"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">);</span>
<a id="__codelineno-72-24" name="__codelineno-72-24" href="#__codelineno-72-24"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">list</span><span class="p">);</span>
<a id="__codelineno-72-25" name="__codelineno-72-25" href="#__codelineno-72-25"></a><span class="p">}</span>
<a id="__codelineno-72-26" name="__codelineno-72-26" href="#__codelineno-72-26"></a>
<a id="__codelineno-72-27" name="__codelineno-72-27" href="#__codelineno-72-27"></a><span class="cm">/* 获取列表长度 */</span>
<a id="__codelineno-72-28" name="__codelineno-72-28" href="#__codelineno-72-28"></a><span class="kt">int</span><span class="w"> </span><span class="nf">size</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-29" name="__codelineno-72-29" href="#__codelineno-72-29"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">;</span>
<a id="__codelineno-72-30" name="__codelineno-72-30" href="#__codelineno-72-30"></a><span class="p">}</span>
<a id="__codelineno-72-31" name="__codelineno-72-31" href="#__codelineno-72-31"></a>
<a id="__codelineno-72-32" name="__codelineno-72-32" href="#__codelineno-72-32"></a><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-72-33" name="__codelineno-72-33" href="#__codelineno-72-33"></a><span class="kt">int</span><span class="w"> </span><span class="nf">capacity</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-34" name="__codelineno-72-34" href="#__codelineno-72-34"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">capacity</span><span class="p">;</span>
<a id="__codelineno-72-35" name="__codelineno-72-35" href="#__codelineno-72-35"></a><span class="p">}</span>
<a id="__codelineno-72-36" name="__codelineno-72-36" href="#__codelineno-72-36"></a>
<a id="__codelineno-72-37" name="__codelineno-72-37" href="#__codelineno-72-37"></a><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-72-38" name="__codelineno-72-38" href="#__codelineno-72-38"></a><span class="kt">int</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-39" name="__codelineno-72-39" href="#__codelineno-72-39"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">);</span>
<a id="__codelineno-72-40" name="__codelineno-72-40" href="#__codelineno-72-40"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-72-41" name="__codelineno-72-41" href="#__codelineno-72-41"></a><span class="p">}</span>
<a id="__codelineno-72-42" name="__codelineno-72-42" href="#__codelineno-72-42"></a>
<a id="__codelineno-72-43" name="__codelineno-72-43" href="#__codelineno-72-43"></a><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-72-44" name="__codelineno-72-44" href="#__codelineno-72-44"></a><span class="kt">void</span><span class="w"> </span><span class="nf">set</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-45" name="__codelineno-72-45" href="#__codelineno-72-45"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">);</span>
<a id="__codelineno-72-46" name="__codelineno-72-46" href="#__codelineno-72-46"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-72-47" name="__codelineno-72-47" href="#__codelineno-72-47"></a><span class="p">}</span>
<a id="__codelineno-72-48" name="__codelineno-72-48" href="#__codelineno-72-48"></a>
<a id="__codelineno-72-49" name="__codelineno-72-49" href="#__codelineno-72-49"></a><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-72-50" name="__codelineno-72-50" href="#__codelineno-72-50"></a><span class="kt">void</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-51" name="__codelineno-72-51" href="#__codelineno-72-51"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">list</span><span class="p">))</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-52" name="__codelineno-72-52" href="#__codelineno-72-52"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">(</span><span class="n">list</span><span class="p">);</span><span class="w"> </span><span class="c1">// 扩容</span>
<a id="__codelineno-72-53" name="__codelineno-72-53" href="#__codelineno-72-53"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-72-54" name="__codelineno-72-54" href="#__codelineno-72-54"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">)]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-72-55" name="__codelineno-72-55" href="#__codelineno-72-55"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-72-56" name="__codelineno-72-56" href="#__codelineno-72-56"></a><span class="p">}</span>
<a id="__codelineno-72-57" name="__codelineno-72-57" href="#__codelineno-72-57"></a>
<a id="__codelineno-72-58" name="__codelineno-72-58" href="#__codelineno-72-58"></a><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-72-59" name="__codelineno-72-59" href="#__codelineno-72-59"></a><span class="kt">void</span><span class="w"> </span><span class="nf">insert</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-60" name="__codelineno-72-60" href="#__codelineno-72-60"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">));</span>
<a id="__codelineno-72-61" name="__codelineno-72-61" href="#__codelineno-72-61"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="o">--</span><span class="n">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-62" name="__codelineno-72-62" href="#__codelineno-72-62"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
<a id="__codelineno-72-63" name="__codelineno-72-63" href="#__codelineno-72-63"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-72-64" name="__codelineno-72-64" href="#__codelineno-72-64"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-72-65" name="__codelineno-72-65" href="#__codelineno-72-65"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-72-66" name="__codelineno-72-66" href="#__codelineno-72-66"></a><span class="p">}</span>
<a id="__codelineno-72-67" name="__codelineno-72-67" href="#__codelineno-72-67"></a>
<a id="__codelineno-72-68" name="__codelineno-72-68" href="#__codelineno-72-68"></a><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-72-69" name="__codelineno-72-69" href="#__codelineno-72-69"></a><span class="c1">// 注意stdio.h 占用了 remove 关键词</span>
<a id="__codelineno-72-70" name="__codelineno-72-70" href="#__codelineno-72-70"></a><span class="kt">int</span><span class="w"> </span><span class="nf">removeNum</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-71" name="__codelineno-72-71" href="#__codelineno-72-71"></a><span class="w"> </span><span class="n">assert</span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">));</span>
<a id="__codelineno-72-72" name="__codelineno-72-72" href="#__codelineno-72-72"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-72-73" name="__codelineno-72-73" href="#__codelineno-72-73"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-74" name="__codelineno-72-74" href="#__codelineno-72-74"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
<a id="__codelineno-72-75" name="__codelineno-72-75" href="#__codelineno-72-75"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-72-76" name="__codelineno-72-76" href="#__codelineno-72-76"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-72-77" name="__codelineno-72-77" href="#__codelineno-72-77"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-72-78" name="__codelineno-72-78" href="#__codelineno-72-78"></a><span class="p">}</span>
<a id="__codelineno-72-79" name="__codelineno-72-79" href="#__codelineno-72-79"></a>
<a id="__codelineno-72-80" name="__codelineno-72-80" href="#__codelineno-72-80"></a><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-72-81" name="__codelineno-72-81" href="#__codelineno-72-81"></a><span class="kt">void</span><span class="w"> </span><span class="nf">extendCapacity</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-82" name="__codelineno-72-82" href="#__codelineno-72-82"></a><span class="w"> </span><span class="c1">// 先分配空间</span>
<a id="__codelineno-72-83" name="__codelineno-72-83" href="#__codelineno-72-83"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">newCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">extendRatio</span><span class="p">;</span>
<a id="__codelineno-72-84" name="__codelineno-72-84" href="#__codelineno-72-84"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">extend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="p">)</span><span class="n">malloc</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">);</span>
<a id="__codelineno-72-85" name="__codelineno-72-85" href="#__codelineno-72-85"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="n">temp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-72-86" name="__codelineno-72-86" href="#__codelineno-72-86"></a>
<a id="__codelineno-72-87" name="__codelineno-72-87" href="#__codelineno-72-87"></a><span class="w"> </span><span class="c1">// 拷贝旧数据到新数据</span>
<a id="__codelineno-72-88" name="__codelineno-72-88" href="#__codelineno-72-88"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">list</span><span class="p">);</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span>
<a id="__codelineno-72-89" name="__codelineno-72-89" href="#__codelineno-72-89"></a><span class="w"> </span><span class="n">extend</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a id="__codelineno-72-90" name="__codelineno-72-90" href="#__codelineno-72-90"></a>
<a id="__codelineno-72-91" name="__codelineno-72-91" href="#__codelineno-72-91"></a><span class="w"> </span><span class="c1">// 释放旧数据</span>
<a id="__codelineno-72-92" name="__codelineno-72-92" href="#__codelineno-72-92"></a><span class="w"> </span><span class="n">free</span><span class="p">(</span><span class="n">temp</span><span class="p">);</span>
<a id="__codelineno-72-93" name="__codelineno-72-93" href="#__codelineno-72-93"></a>
<a id="__codelineno-72-94" name="__codelineno-72-94" href="#__codelineno-72-94"></a><span class="w"> </span><span class="c1">// 更新新数据</span>
<a id="__codelineno-72-95" name="__codelineno-72-95" href="#__codelineno-72-95"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">extend</span><span class="p">;</span>
<a id="__codelineno-72-96" name="__codelineno-72-96" href="#__codelineno-72-96"></a><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">;</span>
<a id="__codelineno-72-97" name="__codelineno-72-97" href="#__codelineno-72-97"></a><span class="p">}</span>
<a id="__codelineno-72-98" name="__codelineno-72-98" href="#__codelineno-72-98"></a>
<a id="__codelineno-72-99" name="__codelineno-72-99" href="#__codelineno-72-99"></a><span class="cm">/* 将列表转换为 Array 用于打印 */</span>
<a id="__codelineno-72-100" name="__codelineno-72-100" href="#__codelineno-72-100"></a><span class="kt">int</span><span class="w"> </span><span class="o">*</span><span class="nf">toArray</span><span class="p">(</span><span class="n">myList</span><span class="w"> </span><span class="o">*</span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-72-101" name="__codelineno-72-101" href="#__codelineno-72-101"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">list</span><span class="o">-&gt;</span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-72-102" name="__codelineno-72-102" href="#__codelineno-72-102"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.cs</span><pre><span></span><code><a id="__codelineno-73-1" name="__codelineno-73-1" href="#__codelineno-73-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-73-2" name="__codelineno-73-2" href="#__codelineno-73-2"></a><span class="k">class</span><span class="w"> </span><span class="nc">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-3" name="__codelineno-73-3" href="#__codelineno-73-3"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-73-4" name="__codelineno-73-4" href="#__codelineno-73-4"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">numsCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">10</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-73-5" name="__codelineno-73-5" href="#__codelineno-73-5"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">numsSize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-73-6" name="__codelineno-73-6" href="#__codelineno-73-6"></a><span class="w"> </span><span class="k">private</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-73-7" name="__codelineno-73-7" href="#__codelineno-73-7"></a>
<a id="__codelineno-73-8" name="__codelineno-73-8" href="#__codelineno-73-8"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-73-9" name="__codelineno-73-9" href="#__codelineno-73-9"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="nf">MyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-10" name="__codelineno-73-10" href="#__codelineno-73-10"></a><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="n">numsCapacity</span><span class="p">];</span>
<a id="__codelineno-73-11" name="__codelineno-73-11" href="#__codelineno-73-11"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-12" name="__codelineno-73-12" href="#__codelineno-73-12"></a>
<a id="__codelineno-73-13" name="__codelineno-73-13" href="#__codelineno-73-13"></a><span class="w"> </span><span class="cm">/* 获取列表长度(即当前元素数量)*/</span>
<a id="__codelineno-73-14" name="__codelineno-73-14" href="#__codelineno-73-14"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">size</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-15" name="__codelineno-73-15" href="#__codelineno-73-15"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">numsSize</span><span class="p">;</span>
<a id="__codelineno-73-16" name="__codelineno-73-16" href="#__codelineno-73-16"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-17" name="__codelineno-73-17" href="#__codelineno-73-17"></a>
<a id="__codelineno-73-18" name="__codelineno-73-18" href="#__codelineno-73-18"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-73-19" name="__codelineno-73-19" href="#__codelineno-73-19"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">capacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-20" name="__codelineno-73-20" href="#__codelineno-73-20"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">numsCapacity</span><span class="p">;</span>
<a id="__codelineno-73-21" name="__codelineno-73-21" href="#__codelineno-73-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-22" name="__codelineno-73-22" href="#__codelineno-73-22"></a>
<a id="__codelineno-73-23" name="__codelineno-73-23" href="#__codelineno-73-23"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-73-24" name="__codelineno-73-24" href="#__codelineno-73-24"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">get</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-25" name="__codelineno-73-25" href="#__codelineno-73-25"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-73-26" name="__codelineno-73-26" href="#__codelineno-73-26"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">numsSize</span><span class="p">)</span>
<a id="__codelineno-73-27" name="__codelineno-73-27" href="#__codelineno-73-27"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nf">IndexOutOfRangeException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-73-28" name="__codelineno-73-28" href="#__codelineno-73-28"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-73-29" name="__codelineno-73-29" href="#__codelineno-73-29"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-30" name="__codelineno-73-30" href="#__codelineno-73-30"></a>
<a id="__codelineno-73-31" name="__codelineno-73-31" href="#__codelineno-73-31"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-73-32" name="__codelineno-73-32" href="#__codelineno-73-32"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">set</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-33" name="__codelineno-73-33" href="#__codelineno-73-33"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">numsSize</span><span class="p">)</span>
<a id="__codelineno-73-34" name="__codelineno-73-34" href="#__codelineno-73-34"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nf">IndexOutOfRangeException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-73-35" name="__codelineno-73-35" href="#__codelineno-73-35"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-73-36" name="__codelineno-73-36" href="#__codelineno-73-36"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-37" name="__codelineno-73-37" href="#__codelineno-73-37"></a>
<a id="__codelineno-73-38" name="__codelineno-73-38" href="#__codelineno-73-38"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-73-39" name="__codelineno-73-39" href="#__codelineno-73-39"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">add</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-40" name="__codelineno-73-40" href="#__codelineno-73-40"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-73-41" name="__codelineno-73-41" href="#__codelineno-73-41"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">numsSize</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">numsCapacity</span><span class="p">)</span>
<a id="__codelineno-73-42" name="__codelineno-73-42" href="#__codelineno-73-42"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-73-43" name="__codelineno-73-43" href="#__codelineno-73-43"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">numsSize</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-73-44" name="__codelineno-73-44" href="#__codelineno-73-44"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-73-45" name="__codelineno-73-45" href="#__codelineno-73-45"></a><span class="w"> </span><span class="n">numsSize</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-73-46" name="__codelineno-73-46" href="#__codelineno-73-46"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-47" name="__codelineno-73-47" href="#__codelineno-73-47"></a>
<a id="__codelineno-73-48" name="__codelineno-73-48" href="#__codelineno-73-48"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-73-49" name="__codelineno-73-49" href="#__codelineno-73-49"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">insert</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-50" name="__codelineno-73-50" href="#__codelineno-73-50"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">numsSize</span><span class="p">)</span>
<a id="__codelineno-73-51" name="__codelineno-73-51" href="#__codelineno-73-51"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nf">IndexOutOfRangeException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-73-52" name="__codelineno-73-52" href="#__codelineno-73-52"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-73-53" name="__codelineno-73-53" href="#__codelineno-73-53"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">numsSize</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">numsCapacity</span><span class="p">)</span>
<a id="__codelineno-73-54" name="__codelineno-73-54" href="#__codelineno-73-54"></a><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-73-55" name="__codelineno-73-55" href="#__codelineno-73-55"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-73-56" name="__codelineno-73-56" href="#__codelineno-73-56"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">numsSize</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-57" name="__codelineno-73-57" href="#__codelineno-73-57"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
<a id="__codelineno-73-58" name="__codelineno-73-58" href="#__codelineno-73-58"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-59" name="__codelineno-73-59" href="#__codelineno-73-59"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-73-60" name="__codelineno-73-60" href="#__codelineno-73-60"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-73-61" name="__codelineno-73-61" href="#__codelineno-73-61"></a><span class="w"> </span><span class="n">numsSize</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-73-62" name="__codelineno-73-62" href="#__codelineno-73-62"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-63" name="__codelineno-73-63" href="#__codelineno-73-63"></a>
<a id="__codelineno-73-64" name="__codelineno-73-64" href="#__codelineno-73-64"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-73-65" name="__codelineno-73-65" href="#__codelineno-73-65"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">remove</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-66" name="__codelineno-73-66" href="#__codelineno-73-66"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="m">0</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">numsSize</span><span class="p">)</span>
<a id="__codelineno-73-67" name="__codelineno-73-67" href="#__codelineno-73-67"></a><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="nf">IndexOutOfRangeException</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-73-68" name="__codelineno-73-68" href="#__codelineno-73-68"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-73-69" name="__codelineno-73-69" href="#__codelineno-73-69"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-73-70" name="__codelineno-73-70" href="#__codelineno-73-70"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numsSize</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-71" name="__codelineno-73-71" href="#__codelineno-73-71"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">];</span>
<a id="__codelineno-73-72" name="__codelineno-73-72" href="#__codelineno-73-72"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-73" name="__codelineno-73-73" href="#__codelineno-73-73"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-73-74" name="__codelineno-73-74" href="#__codelineno-73-74"></a><span class="w"> </span><span class="n">numsSize</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-73-75" name="__codelineno-73-75" href="#__codelineno-73-75"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-73-76" name="__codelineno-73-76" href="#__codelineno-73-76"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-73-77" name="__codelineno-73-77" href="#__codelineno-73-77"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-78" name="__codelineno-73-78" href="#__codelineno-73-78"></a>
<a id="__codelineno-73-79" name="__codelineno-73-79" href="#__codelineno-73-79"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-73-80" name="__codelineno-73-80" href="#__codelineno-73-80"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="k">void</span><span class="w"> </span><span class="nf">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-81" name="__codelineno-73-81" href="#__codelineno-73-81"></a><span class="w"> </span><span class="c1">// 新建一个长度为 numsCapacity * extendRatio 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-73-82" name="__codelineno-73-82" href="#__codelineno-73-82"></a><span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="n">Array</span><span class="p">.</span><span class="n">Resize</span><span class="p">(</span><span class="k">ref</span><span class="w"> </span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="n">numsCapacity</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">extendRatio</span><span class="p">);</span>
<a id="__codelineno-73-83" name="__codelineno-73-83" href="#__codelineno-73-83"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-73-84" name="__codelineno-73-84" href="#__codelineno-73-84"></a><span class="w"> </span><span class="n">numsCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">Length</span><span class="p">;</span>
<a id="__codelineno-73-85" name="__codelineno-73-85" href="#__codelineno-73-85"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-86" name="__codelineno-73-86" href="#__codelineno-73-86"></a>
<a id="__codelineno-73-87" name="__codelineno-73-87" href="#__codelineno-73-87"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-73-88" name="__codelineno-73-88" href="#__codelineno-73-88"></a><span class="w"> </span><span class="k">public</span><span class="w"> </span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="nf">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-89" name="__codelineno-73-89" href="#__codelineno-73-89"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-73-90" name="__codelineno-73-90" href="#__codelineno-73-90"></a><span class="w"> </span><span class="kt">int</span><span class="p">[]</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="kt">int</span><span class="p">[</span><span class="n">numsSize</span><span class="p">];</span>
<a id="__codelineno-73-91" name="__codelineno-73-91" href="#__codelineno-73-91"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">numsSize</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-73-92" name="__codelineno-73-92" href="#__codelineno-73-92"></a><span class="w"> </span><span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">get</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a id="__codelineno-73-93" name="__codelineno-73-93" href="#__codelineno-73-93"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-94" name="__codelineno-73-94" href="#__codelineno-73-94"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-73-95" name="__codelineno-73-95" href="#__codelineno-73-95"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-73-96" name="__codelineno-73-96" href="#__codelineno-73-96"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.swift</span><pre><span></span><code><a id="__codelineno-74-1" name="__codelineno-74-1" href="#__codelineno-74-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-74-2" name="__codelineno-74-2" href="#__codelineno-74-2"></a><span class="kd">class</span> <span class="nc">MyList</span> <span class="p">{</span>
<a id="__codelineno-74-3" name="__codelineno-74-3" href="#__codelineno-74-3"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">nums</span><span class="p">:</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-74-4" name="__codelineno-74-4" href="#__codelineno-74-4"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_capacity</span> <span class="p">=</span> <span class="mi">10</span> <span class="c1">// 列表容量</span>
<a id="__codelineno-74-5" name="__codelineno-74-5" href="#__codelineno-74-5"></a> <span class="kd">private</span> <span class="kd">var</span> <span class="nv">_size</span> <span class="p">=</span> <span class="mi">0</span> <span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-74-6" name="__codelineno-74-6" href="#__codelineno-74-6"></a> <span class="kd">private</span> <span class="kd">let</span> <span class="nv">extendRatio</span> <span class="p">=</span> <span class="mi">2</span> <span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-74-7" name="__codelineno-74-7" href="#__codelineno-74-7"></a>
<a id="__codelineno-74-8" name="__codelineno-74-8" href="#__codelineno-74-8"></a> <span class="cm">/* 构造方法 */</span>
<a id="__codelineno-74-9" name="__codelineno-74-9" href="#__codelineno-74-9"></a> <span class="kd">init</span><span class="p">()</span> <span class="p">{</span>
<a id="__codelineno-74-10" name="__codelineno-74-10" href="#__codelineno-74-10"></a> <span class="n">nums</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">_capacity</span><span class="p">)</span>
<a id="__codelineno-74-11" name="__codelineno-74-11" href="#__codelineno-74-11"></a> <span class="p">}</span>
<a id="__codelineno-74-12" name="__codelineno-74-12" href="#__codelineno-74-12"></a>
<a id="__codelineno-74-13" name="__codelineno-74-13" href="#__codelineno-74-13"></a> <span class="cm">/* 获取列表长度(即当前元素数量)*/</span>
<a id="__codelineno-74-14" name="__codelineno-74-14" href="#__codelineno-74-14"></a> <span class="kd">func</span> <span class="nf">size</span><span class="p">()</span> <span class="p">-&gt;</span> <span class="nb">Int</span> <span class="p">{</span>
<a id="__codelineno-74-15" name="__codelineno-74-15" href="#__codelineno-74-15"></a> <span class="n">_size</span>
<a id="__codelineno-74-16" name="__codelineno-74-16" href="#__codelineno-74-16"></a> <span class="p">}</span>
<a id="__codelineno-74-17" name="__codelineno-74-17" href="#__codelineno-74-17"></a>
<a id="__codelineno-74-18" name="__codelineno-74-18" href="#__codelineno-74-18"></a> <span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-74-19" name="__codelineno-74-19" href="#__codelineno-74-19"></a> <span class="kd">func</span> <span class="nf">capacity</span><span class="p">()</span> <span class="p">-&gt;</span> <span class="nb">Int</span> <span class="p">{</span>
<a id="__codelineno-74-20" name="__codelineno-74-20" href="#__codelineno-74-20"></a> <span class="n">_capacity</span>
<a id="__codelineno-74-21" name="__codelineno-74-21" href="#__codelineno-74-21"></a> <span class="p">}</span>
<a id="__codelineno-74-22" name="__codelineno-74-22" href="#__codelineno-74-22"></a>
<a id="__codelineno-74-23" name="__codelineno-74-23" href="#__codelineno-74-23"></a> <span class="cm">/* 访问元素 */</span>
<a id="__codelineno-74-24" name="__codelineno-74-24" href="#__codelineno-74-24"></a> <span class="kd">func</span> <span class="nf">get</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-&gt;</span> <span class="nb">Int</span> <span class="p">{</span>
<a id="__codelineno-74-25" name="__codelineno-74-25" href="#__codelineno-74-25"></a> <span class="c1">// 索引如果越界则抛出错误,下同</span>
<a id="__codelineno-74-26" name="__codelineno-74-26" href="#__codelineno-74-26"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="n">_size</span> <span class="p">{</span>
<a id="__codelineno-74-27" name="__codelineno-74-27" href="#__codelineno-74-27"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-74-28" name="__codelineno-74-28" href="#__codelineno-74-28"></a> <span class="p">}</span>
<a id="__codelineno-74-29" name="__codelineno-74-29" href="#__codelineno-74-29"></a> <span class="k">return</span> <span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
<a id="__codelineno-74-30" name="__codelineno-74-30" href="#__codelineno-74-30"></a> <span class="p">}</span>
<a id="__codelineno-74-31" name="__codelineno-74-31" href="#__codelineno-74-31"></a>
<a id="__codelineno-74-32" name="__codelineno-74-32" href="#__codelineno-74-32"></a> <span class="cm">/* 更新元素 */</span>
<a id="__codelineno-74-33" name="__codelineno-74-33" href="#__codelineno-74-33"></a> <span class="kd">func</span> <span class="nf">set</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
<a id="__codelineno-74-34" name="__codelineno-74-34" href="#__codelineno-74-34"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="n">_size</span> <span class="p">{</span>
<a id="__codelineno-74-35" name="__codelineno-74-35" href="#__codelineno-74-35"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-74-36" name="__codelineno-74-36" href="#__codelineno-74-36"></a> <span class="p">}</span>
<a id="__codelineno-74-37" name="__codelineno-74-37" href="#__codelineno-74-37"></a> <span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
<a id="__codelineno-74-38" name="__codelineno-74-38" href="#__codelineno-74-38"></a> <span class="p">}</span>
<a id="__codelineno-74-39" name="__codelineno-74-39" href="#__codelineno-74-39"></a>
<a id="__codelineno-74-40" name="__codelineno-74-40" href="#__codelineno-74-40"></a> <span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-74-41" name="__codelineno-74-41" href="#__codelineno-74-41"></a> <span class="kd">func</span> <span class="nf">add</span><span class="p">(</span><span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
<a id="__codelineno-74-42" name="__codelineno-74-42" href="#__codelineno-74-42"></a> <span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-74-43" name="__codelineno-74-43" href="#__codelineno-74-43"></a> <span class="k">if</span> <span class="n">_size</span> <span class="p">==</span> <span class="n">_capacity</span> <span class="p">{</span>
<a id="__codelineno-74-44" name="__codelineno-74-44" href="#__codelineno-74-44"></a> <span class="n">extendCapacity</span><span class="p">()</span>
<a id="__codelineno-74-45" name="__codelineno-74-45" href="#__codelineno-74-45"></a> <span class="p">}</span>
<a id="__codelineno-74-46" name="__codelineno-74-46" href="#__codelineno-74-46"></a> <span class="n">nums</span><span class="p">[</span><span class="n">_size</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
<a id="__codelineno-74-47" name="__codelineno-74-47" href="#__codelineno-74-47"></a> <span class="c1">// 更新元素数量</span>
<a id="__codelineno-74-48" name="__codelineno-74-48" href="#__codelineno-74-48"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-74-49" name="__codelineno-74-49" href="#__codelineno-74-49"></a> <span class="p">}</span>
<a id="__codelineno-74-50" name="__codelineno-74-50" href="#__codelineno-74-50"></a>
<a id="__codelineno-74-51" name="__codelineno-74-51" href="#__codelineno-74-51"></a> <span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-74-52" name="__codelineno-74-52" href="#__codelineno-74-52"></a> <span class="kd">func</span> <span class="nf">insert</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">{</span>
<a id="__codelineno-74-53" name="__codelineno-74-53" href="#__codelineno-74-53"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="n">_size</span> <span class="p">{</span>
<a id="__codelineno-74-54" name="__codelineno-74-54" href="#__codelineno-74-54"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-74-55" name="__codelineno-74-55" href="#__codelineno-74-55"></a> <span class="p">}</span>
<a id="__codelineno-74-56" name="__codelineno-74-56" href="#__codelineno-74-56"></a> <span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-74-57" name="__codelineno-74-57" href="#__codelineno-74-57"></a> <span class="k">if</span> <span class="n">_size</span> <span class="p">==</span> <span class="n">_capacity</span> <span class="p">{</span>
<a id="__codelineno-74-58" name="__codelineno-74-58" href="#__codelineno-74-58"></a> <span class="n">extendCapacity</span><span class="p">()</span>
<a id="__codelineno-74-59" name="__codelineno-74-59" href="#__codelineno-74-59"></a> <span class="p">}</span>
<a id="__codelineno-74-60" name="__codelineno-74-60" href="#__codelineno-74-60"></a> <span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-74-61" name="__codelineno-74-61" href="#__codelineno-74-61"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="n">sequence</span><span class="p">(</span><span class="bp">first</span><span class="p">:</span> <span class="n">_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">next</span><span class="p">:</span> <span class="p">{</span> <span class="nv">$0</span> <span class="o">&gt;=</span> <span class="n">index</span> <span class="o">+</span> <span class="mi">1</span> <span class="p">?</span> <span class="nv">$0</span> <span class="o">-</span> <span class="mi">1</span> <span class="p">:</span> <span class="kc">nil</span> <span class="p">})</span> <span class="p">{</span>
<a id="__codelineno-74-62" name="__codelineno-74-62" href="#__codelineno-74-62"></a> <span class="n">nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span> <span class="p">=</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span>
<a id="__codelineno-74-63" name="__codelineno-74-63" href="#__codelineno-74-63"></a> <span class="p">}</span>
<a id="__codelineno-74-64" name="__codelineno-74-64" href="#__codelineno-74-64"></a> <span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="p">=</span> <span class="n">num</span>
<a id="__codelineno-74-65" name="__codelineno-74-65" href="#__codelineno-74-65"></a> <span class="c1">// 更新元素数量</span>
<a id="__codelineno-74-66" name="__codelineno-74-66" href="#__codelineno-74-66"></a> <span class="n">_size</span> <span class="o">+=</span> <span class="mi">1</span>
<a id="__codelineno-74-67" name="__codelineno-74-67" href="#__codelineno-74-67"></a> <span class="p">}</span>
<a id="__codelineno-74-68" name="__codelineno-74-68" href="#__codelineno-74-68"></a>
<a id="__codelineno-74-69" name="__codelineno-74-69" href="#__codelineno-74-69"></a> <span class="cm">/* 删除元素 */</span>
<a id="__codelineno-74-70" name="__codelineno-74-70" href="#__codelineno-74-70"></a> <span class="p">@</span><span class="n">discardableResult</span>
<a id="__codelineno-74-71" name="__codelineno-74-71" href="#__codelineno-74-71"></a> <span class="kd">func</span> <span class="nf">remove</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="nb">Int</span><span class="p">)</span> <span class="p">-&gt;</span> <span class="nb">Int</span> <span class="p">{</span>
<a id="__codelineno-74-72" name="__codelineno-74-72" href="#__codelineno-74-72"></a> <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">index</span> <span class="o">&gt;=</span> <span class="n">_size</span> <span class="p">{</span>
<a id="__codelineno-74-73" name="__codelineno-74-73" href="#__codelineno-74-73"></a> <span class="bp">fatalError</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">)</span>
<a id="__codelineno-74-74" name="__codelineno-74-74" href="#__codelineno-74-74"></a> <span class="p">}</span>
<a id="__codelineno-74-75" name="__codelineno-74-75" href="#__codelineno-74-75"></a> <span class="kd">let</span> <span class="nv">num</span> <span class="p">=</span> <span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span>
<a id="__codelineno-74-76" name="__codelineno-74-76" href="#__codelineno-74-76"></a> <span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-74-77" name="__codelineno-74-77" href="#__codelineno-74-77"></a> <span class="k">for</span> <span class="n">j</span> <span class="k">in</span> <span class="n">index</span> <span class="p">..</span><span class="o">&lt;</span> <span class="p">(</span><span class="n">_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<a id="__codelineno-74-78" name="__codelineno-74-78" href="#__codelineno-74-78"></a> <span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span> <span class="p">=</span> <span class="n">nums</span><span class="p">[</span><span class="n">j</span> <span class="o">+</span> <span class="mi">1</span><span class="p">]</span>
<a id="__codelineno-74-79" name="__codelineno-74-79" href="#__codelineno-74-79"></a> <span class="p">}</span>
<a id="__codelineno-74-80" name="__codelineno-74-80" href="#__codelineno-74-80"></a> <span class="c1">// 更新元素数量</span>
<a id="__codelineno-74-81" name="__codelineno-74-81" href="#__codelineno-74-81"></a> <span class="n">_size</span> <span class="o">-=</span> <span class="mi">1</span>
<a id="__codelineno-74-82" name="__codelineno-74-82" href="#__codelineno-74-82"></a> <span class="c1">// 返回被删除元素</span>
<a id="__codelineno-74-83" name="__codelineno-74-83" href="#__codelineno-74-83"></a> <span class="k">return</span> <span class="n">num</span>
<a id="__codelineno-74-84" name="__codelineno-74-84" href="#__codelineno-74-84"></a> <span class="p">}</span>
<a id="__codelineno-74-85" name="__codelineno-74-85" href="#__codelineno-74-85"></a>
<a id="__codelineno-74-86" name="__codelineno-74-86" href="#__codelineno-74-86"></a> <span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-74-87" name="__codelineno-74-87" href="#__codelineno-74-87"></a> <span class="kd">func</span> <span class="nf">extendCapacity</span><span class="p">()</span> <span class="p">{</span>
<a id="__codelineno-74-88" name="__codelineno-74-88" href="#__codelineno-74-88"></a> <span class="c1">// 新建一个长度为原数组 extendRatio 倍的新数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-74-89" name="__codelineno-74-89" href="#__codelineno-74-89"></a> <span class="n">nums</span> <span class="p">=</span> <span class="n">nums</span> <span class="o">+</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">_capacity</span> <span class="o">*</span> <span class="p">(</span><span class="n">extendRatio</span> <span class="o">-</span> <span class="mi">1</span><span class="p">))</span>
<a id="__codelineno-74-90" name="__codelineno-74-90" href="#__codelineno-74-90"></a> <span class="c1">// 更新列表容量</span>
<a id="__codelineno-74-91" name="__codelineno-74-91" href="#__codelineno-74-91"></a> <span class="n">_capacity</span> <span class="p">=</span> <span class="n">nums</span><span class="p">.</span><span class="bp">count</span>
<a id="__codelineno-74-92" name="__codelineno-74-92" href="#__codelineno-74-92"></a> <span class="p">}</span>
<a id="__codelineno-74-93" name="__codelineno-74-93" href="#__codelineno-74-93"></a>
<a id="__codelineno-74-94" name="__codelineno-74-94" href="#__codelineno-74-94"></a> <span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-74-95" name="__codelineno-74-95" href="#__codelineno-74-95"></a> <span class="kd">func</span> <span class="nf">toArray</span><span class="p">()</span> <span class="p">-&gt;</span> <span class="p">[</span><span class="nb">Int</span><span class="p">]</span> <span class="p">{</span>
<a id="__codelineno-74-96" name="__codelineno-74-96" href="#__codelineno-74-96"></a> <span class="kd">var</span> <span class="nv">nums</span> <span class="p">=</span> <span class="nb">Array</span><span class="p">(</span><span class="n">repeating</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="bp">count</span><span class="p">:</span> <span class="n">_size</span><span class="p">)</span>
<a id="__codelineno-74-97" name="__codelineno-74-97" href="#__codelineno-74-97"></a> <span class="k">for</span> <span class="n">i</span> <span class="k">in</span> <span class="mi">0</span> <span class="p">..</span><span class="o">&lt;</span> <span class="n">_size</span> <span class="p">{</span>
<a id="__codelineno-74-98" name="__codelineno-74-98" href="#__codelineno-74-98"></a> <span class="n">nums</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="p">=</span> <span class="kr">get</span><span class="p">(</span><span class="n">index</span><span class="p">:</span> <span class="n">i</span><span class="p">)</span>
<a id="__codelineno-74-99" name="__codelineno-74-99" href="#__codelineno-74-99"></a> <span class="p">}</span>
<a id="__codelineno-74-100" name="__codelineno-74-100" href="#__codelineno-74-100"></a> <span class="k">return</span> <span class="n">nums</span>
<a id="__codelineno-74-101" name="__codelineno-74-101" href="#__codelineno-74-101"></a> <span class="p">}</span>
<a id="__codelineno-74-102" name="__codelineno-74-102" href="#__codelineno-74-102"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.zig</span><pre><span></span><code><a id="__codelineno-75-1" name="__codelineno-75-1" href="#__codelineno-75-1"></a><span class="c1">// 列表类简易实现</span>
<a id="__codelineno-75-2" name="__codelineno-75-2" href="#__codelineno-75-2"></a><span class="k">fn</span><span class="w"> </span><span class="n">MyList</span><span class="p">(</span><span class="kr">comptime</span><span class="w"> </span><span class="n">T</span><span class="o">:</span><span class="w"> </span><span class="kt">type</span><span class="p">)</span><span class="w"> </span><span class="kt">type</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-3" name="__codelineno-75-3" href="#__codelineno-75-3"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-4" name="__codelineno-75-4" href="#__codelineno-75-4"></a><span class="w"> </span><span class="kr">const</span><span class="w"> </span><span class="n">Self</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">@This</span><span class="p">();</span>
<a id="__codelineno-75-5" name="__codelineno-75-5" href="#__codelineno-75-5"></a>
<a id="__codelineno-75-6" name="__codelineno-75-6" href="#__codelineno-75-6"></a><span class="w"> </span><span class="n">nums</span><span class="o">:</span><span class="w"> </span><span class="p">[]</span><span class="n">T</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">undefined</span><span class="p">,</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-75-7" name="__codelineno-75-7" href="#__codelineno-75-7"></a><span class="w"> </span><span class="n">numsCapacity</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">10</span><span class="p">,</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-75-8" name="__codelineno-75-8" href="#__codelineno-75-8"></a><span class="w"> </span><span class="n">numSize</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-75-9" name="__codelineno-75-9" href="#__codelineno-75-9"></a><span class="w"> </span><span class="n">extendRatio</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-75-10" name="__codelineno-75-10" href="#__codelineno-75-10"></a><span class="w"> </span><span class="n">mem_arena</span><span class="o">:</span><span class="w"> </span><span class="o">?</span><span class="n">std</span><span class="p">.</span><span class="n">heap</span><span class="p">.</span><span class="n">ArenaAllocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span>
<a id="__codelineno-75-11" name="__codelineno-75-11" href="#__codelineno-75-11"></a><span class="w"> </span><span class="n">mem_allocator</span><span class="o">:</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">mem</span><span class="p">.</span><span class="n">Allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">undefined</span><span class="p">,</span><span class="w"> </span><span class="c1">// 内存分配器</span>
<a id="__codelineno-75-12" name="__codelineno-75-12" href="#__codelineno-75-12"></a>
<a id="__codelineno-75-13" name="__codelineno-75-13" href="#__codelineno-75-13"></a><span class="w"> </span><span class="c1">// 构造函数(分配内存+初始化列表)</span>
<a id="__codelineno-75-14" name="__codelineno-75-14" href="#__codelineno-75-14"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">init</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="o">:</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">mem</span><span class="p">.</span><span class="n">Allocator</span><span class="p">)</span><span class="w"> </span><span class="o">!</span><span class="kt">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-15" name="__codelineno-75-15" href="#__codelineno-75-15"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">mem_arena</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-16" name="__codelineno-75-16" href="#__codelineno-75-16"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_arena</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">heap</span><span class="p">.</span><span class="n">ArenaAllocator</span><span class="p">.</span><span class="n">init</span><span class="p">(</span><span class="n">allocator</span><span class="p">);</span>
<a id="__codelineno-75-17" name="__codelineno-75-17" href="#__codelineno-75-17"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_arena</span><span class="p">.</span><span class="o">?</span><span class="p">.</span><span class="n">allocator</span><span class="p">();</span>
<a id="__codelineno-75-18" name="__codelineno-75-18" href="#__codelineno-75-18"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-19" name="__codelineno-75-19" href="#__codelineno-75-19"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_allocator</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numsCapacity</span><span class="p">);</span>
<a id="__codelineno-75-20" name="__codelineno-75-20" href="#__codelineno-75-20"></a><span class="w"> </span><span class="nb">@memset</span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="nb">@as</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">));</span>
<a id="__codelineno-75-21" name="__codelineno-75-21" href="#__codelineno-75-21"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-22" name="__codelineno-75-22" href="#__codelineno-75-22"></a>
<a id="__codelineno-75-23" name="__codelineno-75-23" href="#__codelineno-75-23"></a><span class="w"> </span><span class="c1">// 析构函数(释放内存)</span>
<a id="__codelineno-75-24" name="__codelineno-75-24" href="#__codelineno-75-24"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">deinit</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">)</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-25" name="__codelineno-75-25" href="#__codelineno-75-25"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">mem_arena</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="kc">null</span><span class="p">)</span><span class="w"> </span><span class="k">return</span><span class="p">;</span>
<a id="__codelineno-75-26" name="__codelineno-75-26" href="#__codelineno-75-26"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_arena</span><span class="p">.</span><span class="o">?</span><span class="p">.</span><span class="n">deinit</span><span class="p">();</span>
<a id="__codelineno-75-27" name="__codelineno-75-27" href="#__codelineno-75-27"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-28" name="__codelineno-75-28" href="#__codelineno-75-28"></a>
<a id="__codelineno-75-29" name="__codelineno-75-29" href="#__codelineno-75-29"></a><span class="w"> </span><span class="c1">// 获取列表长度(即当前元素数量)</span>
<a id="__codelineno-75-30" name="__codelineno-75-30" href="#__codelineno-75-30"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">size</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">)</span><span class="w"> </span><span class="kt">usize</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-31" name="__codelineno-75-31" href="#__codelineno-75-31"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numSize</span><span class="p">;</span>
<a id="__codelineno-75-32" name="__codelineno-75-32" href="#__codelineno-75-32"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-33" name="__codelineno-75-33" href="#__codelineno-75-33"></a>
<a id="__codelineno-75-34" name="__codelineno-75-34" href="#__codelineno-75-34"></a><span class="w"> </span><span class="c1">// 获取列表容量</span>
<a id="__codelineno-75-35" name="__codelineno-75-35" href="#__codelineno-75-35"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">capacity</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">)</span><span class="w"> </span><span class="kt">usize</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-36" name="__codelineno-75-36" href="#__codelineno-75-36"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numsCapacity</span><span class="p">;</span>
<a id="__codelineno-75-37" name="__codelineno-75-37" href="#__codelineno-75-37"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-38" name="__codelineno-75-38" href="#__codelineno-75-38"></a>
<a id="__codelineno-75-39" name="__codelineno-75-39" href="#__codelineno-75-39"></a><span class="w"> </span><span class="c1">// 访问元素</span>
<a id="__codelineno-75-40" name="__codelineno-75-40" href="#__codelineno-75-40"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">get</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="p">)</span><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-41" name="__codelineno-75-41" href="#__codelineno-75-41"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-75-42" name="__codelineno-75-42" href="#__codelineno-75-42"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">())</span><span class="w"> </span><span class="nb">@panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-75-43" name="__codelineno-75-43" href="#__codelineno-75-43"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-75-44" name="__codelineno-75-44" href="#__codelineno-75-44"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span>
<a id="__codelineno-75-45" name="__codelineno-75-45" href="#__codelineno-75-45"></a>
<a id="__codelineno-75-46" name="__codelineno-75-46" href="#__codelineno-75-46"></a><span class="w"> </span><span class="c1">// 更新元素</span>
<a id="__codelineno-75-47" name="__codelineno-75-47" href="#__codelineno-75-47"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">set</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">num</span><span class="o">:</span><span class="w"> </span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-48" name="__codelineno-75-48" href="#__codelineno-75-48"></a><span class="w"> </span><span class="c1">// 索引如果越界则抛出异常,下同</span>
<a id="__codelineno-75-49" name="__codelineno-75-49" href="#__codelineno-75-49"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">())</span><span class="w"> </span><span class="nb">@panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-75-50" name="__codelineno-75-50" href="#__codelineno-75-50"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-75-51" name="__codelineno-75-51" href="#__codelineno-75-51"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span>
<a id="__codelineno-75-52" name="__codelineno-75-52" href="#__codelineno-75-52"></a>
<a id="__codelineno-75-53" name="__codelineno-75-53" href="#__codelineno-75-53"></a><span class="w"> </span><span class="c1">// 尾部添加元素</span>
<a id="__codelineno-75-54" name="__codelineno-75-54" href="#__codelineno-75-54"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">add</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">,</span><span class="w"> </span><span class="n">num</span><span class="o">:</span><span class="w"> </span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="o">!</span><span class="kt">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-55" name="__codelineno-75-55" href="#__codelineno-75-55"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-75-56" name="__codelineno-75-56" href="#__codelineno-75-56"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">())</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-75-57" name="__codelineno-75-57" href="#__codelineno-75-57"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">()]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-75-58" name="__codelineno-75-58" href="#__codelineno-75-58"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-75-59" name="__codelineno-75-59" href="#__codelineno-75-59"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numSize</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-75-60" name="__codelineno-75-60" href="#__codelineno-75-60"></a><span class="w"> </span><span class="p">}</span><span class="w"> </span>
<a id="__codelineno-75-61" name="__codelineno-75-61" href="#__codelineno-75-61"></a>
<a id="__codelineno-75-62" name="__codelineno-75-62" href="#__codelineno-75-62"></a><span class="w"> </span><span class="c1">// 中间插入元素</span>
<a id="__codelineno-75-63" name="__codelineno-75-63" href="#__codelineno-75-63"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">insert</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="p">,</span><span class="w"> </span><span class="n">num</span><span class="o">:</span><span class="w"> </span><span class="n">T</span><span class="p">)</span><span class="w"> </span><span class="o">!</span><span class="kt">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-64" name="__codelineno-75-64" href="#__codelineno-75-64"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">())</span><span class="w"> </span><span class="nb">@panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-75-65" name="__codelineno-75-65" href="#__codelineno-75-65"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-75-66" name="__codelineno-75-66" href="#__codelineno-75-66"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">())</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-75-67" name="__codelineno-75-67" href="#__codelineno-75-67"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-75-68" name="__codelineno-75-68" href="#__codelineno-75-68"></a><span class="w"> </span><span class="kr">var</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-75-69" name="__codelineno-75-69" href="#__codelineno-75-69"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-70" name="__codelineno-75-70" href="#__codelineno-75-70"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
<a id="__codelineno-75-71" name="__codelineno-75-71" href="#__codelineno-75-71"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-72" name="__codelineno-75-72" href="#__codelineno-75-72"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-75-73" name="__codelineno-75-73" href="#__codelineno-75-73"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-75-74" name="__codelineno-75-74" href="#__codelineno-75-74"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numSize</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-75-75" name="__codelineno-75-75" href="#__codelineno-75-75"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-76" name="__codelineno-75-76" href="#__codelineno-75-76"></a>
<a id="__codelineno-75-77" name="__codelineno-75-77" href="#__codelineno-75-77"></a><span class="w"> </span><span class="c1">// 删除元素</span>
<a id="__codelineno-75-78" name="__codelineno-75-78" href="#__codelineno-75-78"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">remove</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">,</span><span class="w"> </span><span class="n">index</span><span class="o">:</span><span class="w"> </span><span class="kt">usize</span><span class="p">)</span><span class="w"> </span><span class="n">T</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-79" name="__codelineno-75-79" href="#__codelineno-75-79"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">())</span><span class="w"> </span><span class="nb">@panic</span><span class="p">(</span><span class="s">&quot;索引越界&quot;</span><span class="p">);</span>
<a id="__codelineno-75-80" name="__codelineno-75-80" href="#__codelineno-75-80"></a><span class="w"> </span><span class="kr">var</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-75-81" name="__codelineno-75-81" href="#__codelineno-75-81"></a><span class="w"> </span><span class="c1">// 索引 i 之后的元素都向前移动一位</span>
<a id="__codelineno-75-82" name="__codelineno-75-82" href="#__codelineno-75-82"></a><span class="w"> </span><span class="kr">var</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span>
<a id="__codelineno-75-83" name="__codelineno-75-83" href="#__codelineno-75-83"></a><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="p">(</span><span class="n">j</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-84" name="__codelineno-75-84" href="#__codelineno-75-84"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span>
<a id="__codelineno-75-85" name="__codelineno-75-85" href="#__codelineno-75-85"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-86" name="__codelineno-75-86" href="#__codelineno-75-86"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-75-87" name="__codelineno-75-87" href="#__codelineno-75-87"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numSize</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span>
<a id="__codelineno-75-88" name="__codelineno-75-88" href="#__codelineno-75-88"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-75-89" name="__codelineno-75-89" href="#__codelineno-75-89"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">num</span><span class="p">;</span>
<a id="__codelineno-75-90" name="__codelineno-75-90" href="#__codelineno-75-90"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-91" name="__codelineno-75-91" href="#__codelineno-75-91"></a>
<a id="__codelineno-75-92" name="__codelineno-75-92" href="#__codelineno-75-92"></a><span class="w"> </span><span class="c1">// 列表扩容</span>
<a id="__codelineno-75-93" name="__codelineno-75-93" href="#__codelineno-75-93"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">extendCapacity</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">)</span><span class="w"> </span><span class="o">!</span><span class="kt">void</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-94" name="__codelineno-75-94" href="#__codelineno-75-94"></a><span class="w"> </span><span class="c1">// 新建一个长度为 size * extendRatio 的数组,并将原数组拷贝到新数组</span>
<a id="__codelineno-75-95" name="__codelineno-75-95" href="#__codelineno-75-95"></a><span class="w"> </span><span class="kr">var</span><span class="w"> </span><span class="n">newCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">extendRatio</span><span class="p">;</span>
<a id="__codelineno-75-96" name="__codelineno-75-96" href="#__codelineno-75-96"></a><span class="w"> </span><span class="kr">var</span><span class="w"> </span><span class="n">extend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_allocator</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">);</span>
<a id="__codelineno-75-97" name="__codelineno-75-97" href="#__codelineno-75-97"></a><span class="w"> </span><span class="nb">@memset</span><span class="p">(</span><span class="n">extend</span><span class="p">,</span><span class="w"> </span><span class="nb">@as</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">));</span>
<a id="__codelineno-75-98" name="__codelineno-75-98" href="#__codelineno-75-98"></a><span class="w"> </span><span class="c1">// 将原数组中的所有元素复制到新数组</span>
<a id="__codelineno-75-99" name="__codelineno-75-99" href="#__codelineno-75-99"></a><span class="w"> </span><span class="n">std</span><span class="p">.</span><span class="n">mem</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">extend</span><span class="p">,</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="p">);</span>
<a id="__codelineno-75-100" name="__codelineno-75-100" href="#__codelineno-75-100"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">extend</span><span class="p">;</span>
<a id="__codelineno-75-101" name="__codelineno-75-101" href="#__codelineno-75-101"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-75-102" name="__codelineno-75-102" href="#__codelineno-75-102"></a><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">numsCapacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">newCapacity</span><span class="p">;</span>
<a id="__codelineno-75-103" name="__codelineno-75-103" href="#__codelineno-75-103"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-104" name="__codelineno-75-104" href="#__codelineno-75-104"></a>
<a id="__codelineno-75-105" name="__codelineno-75-105" href="#__codelineno-75-105"></a><span class="w"> </span><span class="c1">// 将列表转换为数组</span>
<a id="__codelineno-75-106" name="__codelineno-75-106" href="#__codelineno-75-106"></a><span class="w"> </span><span class="kr">pub</span><span class="w"> </span><span class="k">fn</span><span class="w"> </span><span class="n">toArray</span><span class="p">(</span><span class="n">self</span><span class="o">:</span><span class="w"> </span><span class="o">*</span><span class="n">Self</span><span class="p">)</span><span class="w"> </span><span class="o">!</span><span class="p">[]</span><span class="n">T</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-107" name="__codelineno-75-107" href="#__codelineno-75-107"></a><span class="w"> </span><span class="c1">// 仅转换有效长度范围内的列表元素</span>
<a id="__codelineno-75-108" name="__codelineno-75-108" href="#__codelineno-75-108"></a><span class="w"> </span><span class="kr">var</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">mem_allocator</span><span class="p">.</span><span class="n">alloc</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a id="__codelineno-75-109" name="__codelineno-75-109" href="#__codelineno-75-109"></a><span class="w"> </span><span class="nb">@memset</span><span class="p">(</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="nb">@as</span><span class="p">(</span><span class="n">T</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">));</span>
<a id="__codelineno-75-110" name="__codelineno-75-110" href="#__codelineno-75-110"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">nums</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">..)</span><span class="w"> </span><span class="o">|*</span><span class="n">num</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="o">|</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-75-111" name="__codelineno-75-111" href="#__codelineno-75-111"></a><span class="w"> </span><span class="n">num</span><span class="p">.</span><span class="o">*</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">self</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
<a id="__codelineno-75-112" name="__codelineno-75-112" href="#__codelineno-75-112"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-113" name="__codelineno-75-113" href="#__codelineno-75-113"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-75-114" name="__codelineno-75-114" href="#__codelineno-75-114"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-75-115" name="__codelineno-75-115" href="#__codelineno-75-115"></a><span class="w"> </span><span class="p">};</span>
<a id="__codelineno-75-116" name="__codelineno-75-116" href="#__codelineno-75-116"></a><span class="p">}</span>
</code></pre></div>
</div>
<div class="tabbed-block">
<div class="highlight"><span class="filename">my_list.dart</span><pre><span></span><code><a id="__codelineno-76-1" name="__codelineno-76-1" href="#__codelineno-76-1"></a><span class="cm">/* 列表类简易实现 */</span>
<a id="__codelineno-76-2" name="__codelineno-76-2" href="#__codelineno-76-2"></a><span class="kd">class</span><span class="w"> </span><span class="nc">MyList</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-3" name="__codelineno-76-3" href="#__codelineno-76-3"></a><span class="w"> </span><span class="kd">late</span><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">_nums</span><span class="p">;</span><span class="w"> </span><span class="c1">// 数组(存储列表元素)</span>
<a id="__codelineno-76-4" name="__codelineno-76-4" href="#__codelineno-76-4"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">10</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表容量</span>
<a id="__codelineno-76-5" name="__codelineno-76-5" href="#__codelineno-76-5"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// 列表长度(即当前元素数量)</span>
<a id="__codelineno-76-6" name="__codelineno-76-6" href="#__codelineno-76-6"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">_extendRatio</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">2</span><span class="p">;</span><span class="w"> </span><span class="c1">// 每次列表扩容的倍数</span>
<a id="__codelineno-76-7" name="__codelineno-76-7" href="#__codelineno-76-7"></a>
<a id="__codelineno-76-8" name="__codelineno-76-8" href="#__codelineno-76-8"></a><span class="w"> </span><span class="cm">/* 构造方法 */</span>
<a id="__codelineno-76-9" name="__codelineno-76-9" href="#__codelineno-76-9"></a><span class="w"> </span><span class="n">MyList</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-10" name="__codelineno-76-10" href="#__codelineno-76-10"></a><span class="w"> </span><span class="n">_nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">List</span><span class="p">.</span><span class="n">filled</span><span class="p">(</span><span class="n">_capacity</span><span class="p">,</span><span class="w"> </span><span class="m">0</span><span class="p">);</span>
<a id="__codelineno-76-11" name="__codelineno-76-11" href="#__codelineno-76-11"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-12" name="__codelineno-76-12" href="#__codelineno-76-12"></a>
<a id="__codelineno-76-13" name="__codelineno-76-13" href="#__codelineno-76-13"></a><span class="w"> </span><span class="cm">/* 获取列表长度(即当前元素数量)*/</span>
<a id="__codelineno-76-14" name="__codelineno-76-14" href="#__codelineno-76-14"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">size</span><span class="p">()</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">_size</span><span class="p">;</span>
<a id="__codelineno-76-15" name="__codelineno-76-15" href="#__codelineno-76-15"></a>
<a id="__codelineno-76-16" name="__codelineno-76-16" href="#__codelineno-76-16"></a><span class="w"> </span><span class="cm">/* 获取列表容量 */</span>
<a id="__codelineno-76-17" name="__codelineno-76-17" href="#__codelineno-76-17"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">capacity</span><span class="p">()</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="n">_capacity</span><span class="p">;</span>
<a id="__codelineno-76-18" name="__codelineno-76-18" href="#__codelineno-76-18"></a>
<a id="__codelineno-76-19" name="__codelineno-76-19" href="#__codelineno-76-19"></a><span class="w"> </span><span class="cm">/* 访问元素 */</span>
<a id="__codelineno-76-20" name="__codelineno-76-20" href="#__codelineno-76-20"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="kd">get</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-21" name="__codelineno-76-21" href="#__codelineno-76-21"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">RangeError</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-76-22" name="__codelineno-76-22" href="#__codelineno-76-22"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-76-23" name="__codelineno-76-23" href="#__codelineno-76-23"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-24" name="__codelineno-76-24" href="#__codelineno-76-24"></a>
<a id="__codelineno-76-25" name="__codelineno-76-25" href="#__codelineno-76-25"></a><span class="w"> </span><span class="cm">/* 更新元素 */</span>
<a id="__codelineno-76-26" name="__codelineno-76-26" href="#__codelineno-76-26"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="kd">set</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="kt">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-27" name="__codelineno-76-27" href="#__codelineno-76-27"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">RangeError</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-76-28" name="__codelineno-76-28" href="#__codelineno-76-28"></a><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">num</span><span class="p">;</span>
<a id="__codelineno-76-29" name="__codelineno-76-29" href="#__codelineno-76-29"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-30" name="__codelineno-76-30" href="#__codelineno-76-30"></a>
<a id="__codelineno-76-31" name="__codelineno-76-31" href="#__codelineno-76-31"></a><span class="w"> </span><span class="cm">/* 尾部添加元素 */</span>
<a id="__codelineno-76-32" name="__codelineno-76-32" href="#__codelineno-76-32"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">add</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="kt">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-33" name="__codelineno-76-33" href="#__codelineno-76-33"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-76-34" name="__codelineno-76-34" href="#__codelineno-76-34"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">_size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">_capacity</span><span class="p">)</span><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-76-35" name="__codelineno-76-35" href="#__codelineno-76-35"></a><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">_size</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">num</span><span class="p">;</span>
<a id="__codelineno-76-36" name="__codelineno-76-36" href="#__codelineno-76-36"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-76-37" name="__codelineno-76-37" href="#__codelineno-76-37"></a><span class="w"> </span><span class="n">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-76-38" name="__codelineno-76-38" href="#__codelineno-76-38"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-39" name="__codelineno-76-39" href="#__codelineno-76-39"></a>
<a id="__codelineno-76-40" name="__codelineno-76-40" href="#__codelineno-76-40"></a><span class="w"> </span><span class="cm">/* 中间插入元素 */</span>
<a id="__codelineno-76-41" name="__codelineno-76-41" href="#__codelineno-76-41"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">insert</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">,</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="kt">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-42" name="__codelineno-76-42" href="#__codelineno-76-42"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">RangeError</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-76-43" name="__codelineno-76-43" href="#__codelineno-76-43"></a><span class="w"> </span><span class="c1">// 元素数量超出容量时,触发扩容机制</span>
<a id="__codelineno-76-44" name="__codelineno-76-44" href="#__codelineno-76-44"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">_size</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">_capacity</span><span class="p">)</span><span class="w"> </span><span class="n">extendCapacity</span><span class="p">();</span>
<a id="__codelineno-76-45" name="__codelineno-76-45" href="#__codelineno-76-45"></a><span class="w"> </span><span class="c1">// 将索引 index 以及之后的元素都向后移动一位</span>
<a id="__codelineno-76-46" name="__codelineno-76-46" href="#__codelineno-76-46"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">--</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-47" name="__codelineno-76-47" href="#__codelineno-76-47"></a><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">j</span><span class="p">];</span>
<a id="__codelineno-76-48" name="__codelineno-76-48" href="#__codelineno-76-48"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-49" name="__codelineno-76-49" href="#__codelineno-76-49"></a><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kt">num</span><span class="p">;</span>
<a id="__codelineno-76-50" name="__codelineno-76-50" href="#__codelineno-76-50"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-76-51" name="__codelineno-76-51" href="#__codelineno-76-51"></a><span class="w"> </span><span class="n">_size</span><span class="o">++</span><span class="p">;</span>
<a id="__codelineno-76-52" name="__codelineno-76-52" href="#__codelineno-76-52"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-53" name="__codelineno-76-53" href="#__codelineno-76-53"></a>
<a id="__codelineno-76-54" name="__codelineno-76-54" href="#__codelineno-76-54"></a><span class="w"> </span><span class="cm">/* 删除元素 */</span>
<a id="__codelineno-76-55" name="__codelineno-76-55" href="#__codelineno-76-55"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">remove</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-56" name="__codelineno-76-56" href="#__codelineno-76-56"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">index</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="n">_size</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="n">RangeError</span><span class="p">(</span><span class="s1">&#39;索引越界&#39;</span><span class="p">);</span>
<a id="__codelineno-76-57" name="__codelineno-76-57" href="#__codelineno-76-57"></a><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="kt">num</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a id="__codelineno-76-58" name="__codelineno-76-58" href="#__codelineno-76-58"></a><span class="w"> </span><span class="c1">// 将索引 index 之后的元素都向前移动一位</span>
<a id="__codelineno-76-59" name="__codelineno-76-59" href="#__codelineno-76-59"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">_size</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="m">1</span><span class="p">;</span><span class="w"> </span><span class="n">j</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-60" name="__codelineno-76-60" href="#__codelineno-76-60"></a><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">j</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_nums</span><span class="p">[</span><span class="n">j</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="m">1</span><span class="p">];</span>
<a id="__codelineno-76-61" name="__codelineno-76-61" href="#__codelineno-76-61"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-62" name="__codelineno-76-62" href="#__codelineno-76-62"></a><span class="w"> </span><span class="c1">// 更新元素数量</span>
<a id="__codelineno-76-63" name="__codelineno-76-63" href="#__codelineno-76-63"></a><span class="w"> </span><span class="n">_size</span><span class="o">--</span><span class="p">;</span>
<a id="__codelineno-76-64" name="__codelineno-76-64" href="#__codelineno-76-64"></a><span class="w"> </span><span class="c1">// 返回被删除元素</span>
<a id="__codelineno-76-65" name="__codelineno-76-65" href="#__codelineno-76-65"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kt">num</span><span class="p">;</span>
<a id="__codelineno-76-66" name="__codelineno-76-66" href="#__codelineno-76-66"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-67" name="__codelineno-76-67" href="#__codelineno-76-67"></a>
<a id="__codelineno-76-68" name="__codelineno-76-68" href="#__codelineno-76-68"></a><span class="w"> </span><span class="cm">/* 列表扩容 */</span>
<a id="__codelineno-76-69" name="__codelineno-76-69" href="#__codelineno-76-69"></a><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">extendCapacity</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-70" name="__codelineno-76-70" href="#__codelineno-76-70"></a><span class="w"> </span><span class="c1">// 新建一个长度为原数组 _extendRatio 倍的新数组</span>
<a id="__codelineno-76-71" name="__codelineno-76-71" href="#__codelineno-76-71"></a><span class="w"> </span><span class="kd">final</span><span class="w"> </span><span class="n">_newNums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">List</span><span class="p">.</span><span class="n">filled</span><span class="p">(</span><span class="n">_capacity</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">_extendRatio</span><span class="p">,</span><span class="w"> </span><span class="m">0</span><span class="p">);</span>
<a id="__codelineno-76-72" name="__codelineno-76-72" href="#__codelineno-76-72"></a><span class="w"> </span><span class="c1">// 将原数组拷贝到新数组</span>
<a id="__codelineno-76-73" name="__codelineno-76-73" href="#__codelineno-76-73"></a><span class="w"> </span><span class="n">List</span><span class="p">.</span><span class="n">copyRange</span><span class="p">(</span><span class="n">_newNums</span><span class="p">,</span><span class="w"> </span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="n">_nums</span><span class="p">);</span>
<a id="__codelineno-76-74" name="__codelineno-76-74" href="#__codelineno-76-74"></a><span class="w"> </span><span class="c1">// 更新 _nums 的引用</span>
<a id="__codelineno-76-75" name="__codelineno-76-75" href="#__codelineno-76-75"></a><span class="w"> </span><span class="n">_nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_newNums</span><span class="p">;</span>
<a id="__codelineno-76-76" name="__codelineno-76-76" href="#__codelineno-76-76"></a><span class="w"> </span><span class="c1">// 更新列表容量</span>
<a id="__codelineno-76-77" name="__codelineno-76-77" href="#__codelineno-76-77"></a><span class="w"> </span><span class="n">_capacity</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_nums</span><span class="p">.</span><span class="n">length</span><span class="p">;</span>
<a id="__codelineno-76-78" name="__codelineno-76-78" href="#__codelineno-76-78"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-79" name="__codelineno-76-79" href="#__codelineno-76-79"></a>
<a id="__codelineno-76-80" name="__codelineno-76-80" href="#__codelineno-76-80"></a><span class="w"> </span><span class="cm">/* 将列表转换为数组 */</span>
<a id="__codelineno-76-81" name="__codelineno-76-81" href="#__codelineno-76-81"></a><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">toArray</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-82" name="__codelineno-76-82" href="#__codelineno-76-82"></a><span class="w"> </span><span class="n">List</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span><span class="w"> </span><span class="n">nums</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[];</span>
<a id="__codelineno-76-83" name="__codelineno-76-83" href="#__codelineno-76-83"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">_size</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-76-84" name="__codelineno-76-84" href="#__codelineno-76-84"></a><span class="w"> </span><span class="n">nums</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="kd">get</span><span class="p">(</span><span class="n">i</span><span class="p">));</span>
<a id="__codelineno-76-85" name="__codelineno-76-85" href="#__codelineno-76-85"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-86" name="__codelineno-76-86" href="#__codelineno-76-86"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">nums</span><span class="p">;</span>
<a id="__codelineno-76-87" name="__codelineno-76-87" href="#__codelineno-76-87"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-76-88" name="__codelineno-76-88" href="#__codelineno-76-88"></a><span class="p">}</span>
</code></pre></div>
</div>
</div>
</div>
<h2 id="__comments">评论</h2>
<!-- Insert generated snippet here -->
<script
src="https://giscus.app/client.js"
data-repo="krahets/hello-algo"
data-repo-id="R_kgDOIXtSqw"
data-category="Announcements"
data-category-id="DIC_kwDOIXtSq84CSZk_"
data-mapping="pathname"
data-strict="1"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="top"
data-theme="preferred_color_scheme"
data-lang="zh-CN"
crossorigin="anonymous"
async
>
</script>
<!-- Synchronize Giscus theme with palette -->
<script>
var giscus = document.querySelector("script[src*=giscus]")
/* Set palette on initial load */
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate" ? "dark" : "light"
giscus.setAttribute("data-theme", theme)
}
/* Register event handlers after documented loaded */
document.addEventListener("DOMContentLoaded", function() {
var ref = document.querySelector("[data-md-component=palette]")
ref.addEventListener("change", function() {
var palette = __md_get("__palette")
if (palette && typeof palette.color === "object") {
var theme = palette.color.scheme === "slate" ? "dark" : "light"
/* Instruct Giscus to change theme */
var frame = document.querySelector(".giscus-frame")
frame.contentWindow.postMessage(
{ giscus: { setConfig: { theme } } },
"https://giscus.app"
)
}
})
})
</script>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
回到页面顶部
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../linked_list/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 4.2. &amp;nbsp; 链表" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
上一页
</span>
<div class="md-ellipsis">
4.2. &nbsp; 链表
</div>
</div>
</a>
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 4.4. &amp;nbsp; 小结" rel="next">
<div class="md-footer__title">
<span class="md-footer__direction">
下一页
</span>
<div class="md-ellipsis">
4.4. &nbsp; 小结
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 2023 Krahets
</div>
</div>
<div class="md-social">
<a href="https://github.com/krahets" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</a>
<a href="https://twitter.com/krahets" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
</a>
<a href="https://leetcode.cn/u/jyd/" target="_blank" rel="noopener" title="leetcode.cn" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6zm80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["content.action.edit", "content.code.annotate", "content.code.copy", "content.tabs.link", "content.tooltips", "navigation.indexes", "navigation.top", "navigation.footer", "navigation.tracking", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../assets/javascripts/workers/search.208ed371.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="../../assets/javascripts/bundle.fac441b0.min.js"></script>
<script src="../../javascripts/mathjax.js"></script>
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</body>
</html>