链表的建立

链表基础知识
1.连接表是通过链接连接在一起的数据结构的一个序列。
2.链表是一个序列的链接,其中包含项目。每个链接中包含到另一条连接。
3.链表是数组之后第二种最常用的数据结构。
4.以下是理解链表的概念,重要术语:
Link- 链表中的每个链路可以存储数据称为一个元素
Next-链表的每个链接包含一个链接到下一个,被称为下一个
node-结点
LinkedList - LinkedList包含连接链接到名为First的第一个环节。


链表表示:

最重要的部分:
1.链表包含一个名为第一个(first)的链接元素 //(head)
2.每个链路进行数据字段和链接域叫做下一个(next)。
3.每一个Link链接,其利用其下一个链接的下一个链接
4.最后一个链接带有链接的空标记列表的末尾。(NULL)

  • 单向链表(只包含一个指针域,称 线性链表/单向链表) //链表是一种动态地进行存储分配的一种结构,Ps:倒也是有静态的

先看一个静态的 :3 个结构体(a、b、c)

思路:
1.head=&a ; //第一个:连接接结点(头部)
2.a.next=&b; //下一个:连接下一个结点
b.next=&c;
3. c.next=&NULL //末尾:空标记

#include <stdio.h>
struct Student
{ int num;
float score;
struct Student *next;//连接下一个的指针
};
int main()
{ struct Student a,b,c,*head,*p; //定义a. num=10101; a.score=89.5; //赋值b. num=10103; b.score=90; c. num=10107; c.score=85; head=&a; a.next=&b; //连接b.next=&c; c.next=NULL; p=head; //同为指针,通过 head找到链表的头,不要轻易改变头的地址do
{printf(“%ld%5.1f\n”,p->num,p->score);
p=p->next; // 同 p++,跳转下一个结点的地址
}while(p!=NULL);  //如果p==NULL(到尾了)跳出
return 0;
}

静态的弊端:每一次连接写的很麻烦eg:a.next=&b
所以看一下动态的叭


动态思路
1.有头(head)有尾(p1)有连接(p2);三个指针
2.开拓者p1,使用动态数组:p1=(struct Student *)malloc(sizeof(Student ));读入数据scanf
3.第一个位置:三者先都指向第一个位置,然而head留守,p2跟p1走
4.再开辟,p2连接:
p2->next=p1;
p2=p2->next; // (p2++)跳转下一个,或者写成p2=p1;

#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct Student)//简化后续操作
//创建一个结构体,其中含有链接指针
struct Student
{
long num;
float score;
struct Student *next;
};int n;//
//写一个返回head(指针)的函数,类型:结构体类型;名:create
struct Student *creat(void)
{ struct Student *head,*p1,*p2; n=0;//三个指针,计数 np1=p2=( struct Student*) malloc(LEN);//开辟第一个,关联 scanf(“%ld,%f”,&p1->num,&p1->score); //边开辟,边读入数据head=NULL;//此时头部还未指向while(p1->num!=0)//题目要求读入0就会结束{n=n+1;//第 n个结点if(n==1) head=p1;//找到第一个结点,关联头部 headelse p2->next=p1;//剩下结点的连接p2=p1;//p2的跳转,也可以写成:p2=p2->next;p1=(struct Student*)malloc(LEN);//p1继续开拓,读入数据 scanf(“%ld,%f”,&p1->num,&p1->score);}
p2->next=NULL; //定义尾部,否则开拓不停,出不来
return(head);//返回链表的头部
}

主函数输出部分:

int main()
{struct Student*pt;pt=creat();while(p!=NULL){printf(“\nnum:%ld\nscore:%5.1f\n”,pt->num,pt->score);p=p->next;}
return 0;
}

链表的删除

头部和尾部删除:向中间跳转指向,头向下一个指向,尾向前一个指向
中部删除:前一个调过删除部分指向下一个,删除部分free()


链表的插入

原链表非空(已经排序过):找到插入位置,存下后一个的地址(q=p->NEXT),待插入p->NEXT=pr->NEXT;



回见orz//留下了无能的泪水…

小白记事本--链表--loading相关推荐

  1. Pytorch 小白记事本 1

    Pytorch 小白记事本 1 Python pip 安装与使用 下载就不多说了,我们从判断是否安装开始记录: pip --version pip 最常用命令 显示版本和路径 pip --versio ...

  2. 小白记事本--学不明白还怕忘记指针--loading未完待续

    --------------------------------------我是可爱的分割线- -------------------------------------- 使用方式1:(&普 ...

  3. 小白记事本--JAVA入门

    JAVA的安装与环境配置 Windows传送门 java开发环境搭建与eclipse安装教程 win10环境配置传送门:win10java环境配置 2021/6/8补充:java系统学习传送门:bil ...

  4. 不带头节点的链表有哪些缺点_23张图!万字详解「链表」,从小白到大佬!

    链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...

  5. 数据结构解析——小白也能看懂的单链表

    引言 单链表在数据结构中是很重要的一种线性结构,它是单向的,有着非常广泛的应用领域:虽然现在很多语言中都有封装好的链表类型可以直接使用,但是自己能写一个链表并实现基本操作是至关重要的: 接下来我将用代 ...

  6. 新手小白用记事本编写Java入门程序需要注意的常见问题

    Java入门程序-常见问题 1.文件扩展名是否打开 对新手小白来说,文件扩展名是经常容易忘记的.在我们用记事本编写一个好入门程序,然后保存的时侯,需要修改文件的格式为.java,但是如果没有打开文件的 ...

  7. 23张图!万字详解「链表」,从小白到大佬!

    链表和数组是数据类型中两个重要又常用的基础数据类型. 数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解 ...

  8. java 双向链表_23张图!万字详解「链表」,从小白到大佬

    链表和数组是数据类型中两个重要又常用地基础数据类型,数组是连续存储在内存中的数据结构,因此它的优势是可以通过下标迅速的找到元素的位置,而它的缺点则是在插入和删除元素时会导致大量元素的被迫移动,为了解决 ...

  9. 小白算法积累——单链表6#带头结点单链表+递增有序

    题目:有一个带头结点的单链表L,设计一个算法使其元素递增有序. 关键字:带头结点单链表+递增有序 思路 采用直接插入排序算法的思想:就是先分理出头结点+第一个结点组成原始新链表,然后依次将后续结点摘下 ...

最新文章

  1. resttemplate 文件上传 上传文件
  2. Crypto++库在VS 2005中的使用——RSA加解密
  3. [笔记]NumPy基础操作
  4. 台达a2_台达自动化控制系统在IC烧录机上的应用
  5. [20170412]bbed恢复修改记录(不等长).txt
  6. cmake 安装_vscode不写一行配置,用cmake傻瓜式搭建C++编译调试环境
  7. [bbk5307]第76集 第9章 -数据库性能维护 03
  8. apache主机的重定向和多域名绑定
  9. 连接数据库是显示无法连接到服务器,数据库无法连接到服务器怎么办(解决服务器连接故障的技巧)...
  10. Tomcat 7 部署和配置
  11. linux编辑文本内容的命令,Linux的文本编辑和文本内容查看命令
  12. vector2Drawable(批量将png图片转换成android使用的矢量图 )
  13. 解决IIS无响应假死状态
  14. java小组的队名,霸气小组队名口号大全
  15. Android studio虚拟器突然黑屏解决办法
  16. 《敏捷革命》读书笔记
  17. OpenLayers 之 地图图层数据来源(ol.source)详解,ps图层混合模式详解
  18. 燃起来 ESP32移植LVGL最新版本8.2
  19. getElementById()和$(#id)的区别
  20. 东北大学软件项目管理与过程改进复习提纲(2020)——第一章

热门文章

  1. C++之includeiostream与includeiostream.h
  2. UE4之Import源码解析
  3. tensorflow之add_to_collection
  4. 人脸系列:人脸检测、人脸关键点定位、人脸优选、人脸对齐、人脸特征提取、人脸跟踪、人脸活体检测
  5. 云服务器的安全组各个端口代表什么意思?
  6. 不想用宝塔面板建站,如何手动搭建LAMP环境安装wordpress
  7. 模拟生产者-消费者问题和读者-写者问题
  8. atm系统的用例模型_ATM银行系统用例图.doc
  9. python中trun是什么意思_Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解...
  10. python字典占内存_Python:减少字典的内存使用