Maison base de données tutoriel mysql 04.线性表(三)链式存储结构.单链表2

04.线性表(三)链式存储结构.单链表2

Jun 07, 2016 pm 04:13 PM
单链表 存储 线性 结构

链式存储结构.单链表2 顺序存储结构的创建实质是一个数组的初始化,存储空间连续且其大小和类型已经固定;单链表存储空间不连续,是一种动态结构且它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。 一.单链表的整

链式存储结构.单链表2
顺序存储结构的创建实质是一个数组的初始化,存储空间连续且其大小和类型已经固定;单链表存储空间不连续,是一种动态结构且它所占用空间的大小和位置是不需要预先分配划定的,可以根据系统的情况和实际的需求即时生成。 一.单链表的整表创建 创建单链表的过程就是一个动态生成链表的过程,即从“空表”的初始化起,依次建立各元素结点,并逐个插入链表。 1.算法思路 (1)声明一个结点p和计数器变量i; (2)初始化一空链表L (3)让链表L的头结点的指针指向NULL,即建立一个带头结点的单链表 *L=(LinkList)malloc(sizeof(Node)); (*L)->next=NULL; (4)循环: a.生成一个新结点赋值给p; b.随机生成一个数字赋值给p的数据域p->data; c.将p插入到头结点之前与一新结点之间 2.源码实现 (1)头插法:始终让新结点在第一的位置 /*随机产生n个元素的值,建立带头结点的单链线性表L(头插法)*/ typedef struct Node *LinkList; //定义LinkList void CreateListHead(LinkList *L,int n) { LinkList p; int i; srand(time(0)); //初始化随机数种子 /*1.建立一个带头结点的单链表*/ *L=(LinkList)malloc(sizeof(Node)); //初始化一空链表L (*L)->next=NULL; //让链表L的头结点的指针指向NULL /*2.循环插入新结点到单链表中*/ for(i=0;idata=rand()%100+1; //设置新结点的数据域 p->next=(*L)->next; //设置新结点的指针域:使p结点的后继结点为头指针之前指向的结点 (*L)->next=p; //更改头结点的后继结点为新结点p } } (2)后插法:把每次新结点都插在终端结点的后面 /*随机产生n个元素的值,建立带头结点的单链线性表L(尾插法)*/ typedef struct Node *LinkList; //定义LinkList void CreateListTail(LinkList *L,int n) { LinkList p,r; int i; srand(time(0)); //初始化随机数种子 /*1.建立一个带头结点的单链表并设置尾结点*/ *L=(LinkList)malloc(sizeof(Node)); //初始化一空链表L,L指整个单链表 r=*L; //r为指向尾部的结点 /*2.循环插入新结点到单链表中*/ for(i=0;idata=rand()%100+1; //设置新结点的数据域 r->next=p; //将表尾终端结点的指针指向新结点 r=p; //将当前的新结点定义为表尾终端结点 } r->next=NULL; //此时的尾结点为p,相当于p->next=null,,表示当前链表结束 } 注释:注意L与r的关系,L是指整个单链表,而r是指向尾结点的变量;r会随着循环不断地变化结点,而L则是随着循环增长为一个多结点的链表。

升华笔记: 1.如何创建一个带头结点的单链表? (1)初始化一空链表L (2)让链表L的头结点的指针指向NULL 源码实现: LinkList *L; *L=(LinkList)malloc(sizeof(Node)); (*L)->next=NULL; 2.头插法如何实现插入新结点? (1)生成一个新结点 (2)设置新结点的数据域 (3)设置新结点的指针域 (4)将新结点作为上一个结点的后继结点 源码实现:p=(LinkList)malloc(sizeof(Node)); p->data=e; //e为数据 p->next=(*L)->next; //设置新结点的指针域:使p结点的后继结点为头指针之前指向的结点 (*L)->next=p; //更改头结点的后继结点为新结点p 3.尾差法如何实现插入新结点? (1)声明一个结点r,并将其设置为链表L的尾部结点 (2)生成一个新结点p (3)设置新结点的数据域 (4)将表尾终端结点的指针指向新结点,并将新结点设置为尾部结点 (5)设置新的表位结点指针指向NULL,表示当前链表结束 源码实现:LinkList *L,p; *L=(LinkList)malloc(sizeof(Node)); r=*L; p=(LinkList)malloc(sizeof(N【本文来自鸿网互联 (http://www.68idc.cn)】ode)); p->data=rand()%100+1; r->next=p; r=p;
二.单链表的整表删除
1.算法思路
(1)声明一个结点p和q; (2)将单链表的第一个结点赋值给p (3)循环: a.将下一结点赋值给q b.释放p c.将q赋值给p 2.源码实现: /*初始化条件:单链式线性表L已存在,操作结果:将单链表L重置为空表*/ typedef struct Node *LinkList; //定义LinkList
typedef int Status;
Status ClearList(LinkList *L) { LinkList p,q; p=(*L)->next; //将单链表的第一个结点赋值给结点p while(p) { q=p->next; //将p的下一个结点设置为q free(p); //释放结点p p=q; //p指向下一结点q } (*L)->next=NULL; //最后,单链表头结点指针域为空 returm OK; } 三.单链表结构与顺序存储结构的优缺点 1.存储分配方式 (1)顺序存储结构用一段联系的存储单元依次存储线性表的数据元素 (2)单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素 2.时间性能 (1)查找:顺序存储结构O(1);单链表O(n) (2)删除和插入:顺序存储结构需要平均移动表长一半的元素,时间为O(n);单链表在指出某位置的指针后,插入和删除时间仅为O(1) 3.空间性能 (1)顺序存储结构需要预分配存储空间,分大了,浪费,分小了易发生溢出; (2)单链表不需要分配存储空间,只要有就可以分配,元素个数不受限制

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Huawei lancera l'année prochaine des produits de stockage MED innovants : la capacité du rack dépasse 10 Po et la consommation électrique est inférieure à 2 kW Huawei lancera l'année prochaine des produits de stockage MED innovants : la capacité du rack dépasse 10 Po et la consommation électrique est inférieure à 2 kW Mar 07, 2024 pm 10:43 PM

Ce site Web a rapporté le 7 mars que le Dr Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a récemment assisté à la conférence MWC2024 et a spécifiquement présenté la solution de stockage magnétoélectrique OceanStorArctic de nouvelle génération conçue pour les données chaudes (WarmData) et les données froides (ColdData). Zhou Yuefeng, président de la gamme de produits de stockage de données de Huawei, a publié une série de solutions innovantes Source de l'image : Le communiqué de presse officiel de Huawei joint à ce site est le suivant : Le coût de cette solution est 20 % inférieur à celui de la bande magnétique, et son coût est de 20 % inférieur à celui de la bande magnétique. la consommation électrique est 90 % inférieure à celle des disques durs. Selon les médias technologiques étrangers blockandfiles, un porte-parole de Huawei a également révélé des informations sur la solution de stockage magnétoélectrique : le disque magnétoélectronique (MED) de Huawei est une innovation majeure dans le domaine des supports de stockage magnétiques. ME de première génération

Compétences en développement Vue3+TS+Vite : comment chiffrer et stocker des données Compétences en développement Vue3+TS+Vite : comment chiffrer et stocker des données Sep 10, 2023 pm 04:51 PM

Conseils de développement Vue3+TS+Vite : Comment crypter et stocker des données Avec le développement rapide de la technologie Internet, la sécurité des données et la protection de la vie privée deviennent de plus en plus importantes. Dans l'environnement de développement Vue3+TS+Vite, comment chiffrer et stocker les données est un problème auquel chaque développeur doit faire face. Cet article présentera certaines techniques courantes de cryptage et de stockage des données pour aider les développeurs à améliorer la sécurité des applications et l'expérience utilisateur. 1. Chiffrement des données Chiffrement des données frontal Le chiffrement frontal est un élément important de la protection de la sécurité des données. Couramment utilisé

Comment vider le cache sous Windows 11 : Tutoriel détaillé avec images Comment vider le cache sous Windows 11 : Tutoriel détaillé avec images Apr 24, 2023 pm 09:37 PM

Qu’est-ce que le cache ? Un cache (prononcé ka·shay) est un composant matériel ou logiciel spécialisé à haute vitesse utilisé pour stocker des données et des instructions fréquemment demandées, qui à leur tour peuvent être utilisées pour charger plus rapidement des sites Web, des applications, des services et d'autres aspects du système. . La mise en cache rend les données les plus fréquemment consultées facilement disponibles. Les fichiers cache ne sont pas identiques à la mémoire cache. Les fichiers cache font référence aux fichiers fréquemment nécessaires tels que les fichiers PNG, les icônes, les logos, les shaders, etc., qui peuvent être requis par plusieurs programmes. Ces fichiers sont stockés dans votre espace disque physique, généralement cachés. La mémoire cache, quant à elle, est un type de mémoire plus rapide que la mémoire principale et/ou la RAM. Il réduit considérablement le temps d'accès aux données car il est plus proche du CPU et plus rapide que la RAM.

Processus d'installation de Git sur Ubuntu Processus d'installation de Git sur Ubuntu Mar 20, 2024 pm 04:51 PM

Git est un système de contrôle de version distribué rapide, fiable et adaptable. Il est conçu pour prendre en charge des flux de travail distribués et non linéaires, ce qui le rend idéal pour les équipes de développement de logiciels de toutes tailles. Chaque répertoire de travail Git est un référentiel indépendant avec un historique complet de toutes les modifications et la possibilité de suivre les versions même sans accès au réseau ni serveur central. GitHub est un référentiel Git hébergé sur le cloud qui fournit toutes les fonctionnalités du contrôle de révision distribué. GitHub est un référentiel Git hébergé sur le cloud. Contrairement à Git qui est un outil CLI, GitHub dispose d'une interface utilisateur graphique basée sur le Web. Il est utilisé pour le contrôle de version, ce qui implique de collaborer avec d'autres développeurs et de suivre les modifications apportées aux scripts et aux scripts au fil du temps.

Comment PHP et Swoole parviennent-ils à une mise en cache et un stockage efficaces des données ? Comment PHP et Swoole parviennent-ils à une mise en cache et un stockage efficaces des données ? Jul 23, 2023 pm 04:03 PM

Comment PHP et Swoole parviennent-ils à une mise en cache et un stockage efficaces des données ? Présentation : Dans le développement d'applications Web, la mise en cache et le stockage des données sont un élément très important. PHP et swoole fournissent une méthode efficace pour mettre en cache et stocker des données. Cet article présentera comment utiliser PHP et swoole pour obtenir une mise en cache et un stockage efficaces des données, et donnera des exemples de code correspondants. 1. Introduction à swoole : swoole est un moteur de communication réseau asynchrone hautes performances développé pour le langage PHP.

Comment utiliser correctement sessionStorage pour protéger les données sensibles Comment utiliser correctement sessionStorage pour protéger les données sensibles Jan 13, 2024 am 11:54 AM

Comment utiliser correctement sessionStorage pour stocker des informations sensibles nécessite des exemples de code spécifiques Que ce soit dans le développement Web ou le développement d'applications mobiles, nous devons souvent stocker et traiter des informations sensibles, telles que les informations de connexion des utilisateurs, les numéros d'identification, etc. Dans le développement front-end, l'utilisation de sessionStorage est une solution de stockage courante. Cependant, étant donné que sessionStorage est un stockage basé sur un navigateur, certains problèmes de sécurité doivent être pris en compte pour garantir que les informations sensibles stockées ne soient pas consultées et utilisées de manière malveillante.

Quelles sont les caractéristiques syntaxiques et structurelles des expressions lambda ? Quelles sont les caractéristiques syntaxiques et structurelles des expressions lambda ? Apr 25, 2024 pm 01:12 PM

L'expression Lambda est une fonction anonyme sans nom et sa syntaxe est la suivante : (parameter_list) -> expression. Ils présentent l’anonymat, la diversité, le curry et la fermeture. Dans des applications pratiques, les expressions Lambda peuvent être utilisées pour définir des fonctions de manière concise, comme la fonction de sommation sum_lambda=lambdax,y:x+y, et appliquer la fonction map() à la liste pour effectuer l'opération de sommation.

Quelle est l'origine de la structure de base et de la technologie d'Internet ? Quelle est l'origine de la structure de base et de la technologie d'Internet ? Dec 15, 2020 pm 04:48 PM

La structure et la technologie de base d'Internet proviennent d'ARPANET. ARPANET constitue une étape importante dans le développement de la technologie des réseaux informatiques. Ses résultats de recherche ont joué un rôle important dans la promotion du développement de la technologie des réseaux et ont jeté les bases de la formation d'Internet. Arpanet (Arpanet) a été le premier réseau de commutation de paquets opérationnel au monde développé par la Defense Advanced Research Projects Agency des États-Unis. Il est l'ancêtre de l'Internet mondial.

See all articles