链表概述

  链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:

一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。

  链表的各类操作包括:学习单向链表的创建、删除、 插入(无序、有序)、输出、 排序(选择、插入、冒泡)、反序等等。

基本操作

1. 节点的构造

#include<stdio.h>

#include<stdlib.h>

#include<malloc.h>

#defineLEN sizeof(struct stu)structstu{

//数据char num[10];char name[20];float score;

//指针structstu*next;};

2.  建立链表

struct stu *create(){

/structstu*head;structstu*p1, *p2;

head = (struct stu *)malloc(LEN);    head->next =NULL;

p1 = head;

p2 = (struct stu *)malloc(LEN);

printf("输入个人信息:学籍号、姓名和总成绩\n");

scanf("%s%s%f",p2->num, p2->name, &p2->score);    getchar();

while(strcmp(p2->num,"0") !=0){/*

执行结束后

1。p2的next域为NULL.

2。第一个节点的next域指向第二个节点的数据域

3。p1指针指向第二个节点的数据域

p2->next = p1->next;        p1->next = p2;        p1 = p2;

p2 = (struct stu *)malloc(LEN);printf("输入个人信息:学籍号、姓名和总成绩\n");

scanf("%s%s%f",p2->num, p2->name, &p2->score);        getchar();    }

free(p2);returnhead;};

3. 输出链表

void print(struct stu * head){structstu*p;

printf("num name score\n");    p = head->next;

while(p!=NULL){

printf("%-10s %-20s %-4.1f\n",p->num, p->name, p->score);

p=p->next;    }}

4. 插入节点

如果你在学习C/C++的过程中遇到了问题,可以来加入小编的企鹅圈问小编哦~小编很热情的(●’◡’●)

void insert(struct stu * head, struct stu * p0)

{    struct stu *p1, *p2;    p1 = head->next;p2 = head;

while((p1!=NULL) && (strcmp(p0->num, p1->num)==1))

{p2=p1;    p1=p1->next;    } p0->next = p2->next;    p2->next = p0;}

5. 删除节点

int delete(struct stu *head,charnum[]){ structstu*p1, *p2;p1 = head->next; p2 = head;

while(p1!=NULL&&strcmp(num, p1->num)!=0)

{        p2=p1;        p1=p1->next;    }

if(!p1){return0;    }

p2->next = p1->next;free(p1);return1;}

6. 主函数

//主函数int main()

{structstu*h, *p0;charnum[10];printf("建立链表\n");

h = create();    p0 = (struct stu *)malloc(LEN);

printf("输入待插入的个人信息:学籍号、姓名和总成绩\n");

scanf("%s%s%f",p0->num, p0->name, &p0->score);

getchar();if(strcmp(p0->num,"0") !=0){        insert(h, p0);    }

printf("输入待删除个人信息的学号\n");

scanf("%s",num);if(strcmp(num,"0") !=0){delete(h, num);

}printf("输出链表\n");    print(h);return0;}

C语言基础入门:链表详解篇相关推荐

  1. C语言基础之操作符详解

    C语言基础之操作符详解 操作符的分类 算术操作符 移位操作符 位操作符 逻辑操作符 逗号表达式 表达式求值 隐式类型转换 算术转换 操作符的属性 xwg今天就带各位大佬来了解一波C语言的操作符. 操作 ...

  2. Skynet基础入门例子详解(1)

    Skynet 是一个轻量级的为在线游戏服务器打造的框架,它也不仅仅使用在游戏服务器领域. Skynet开源项目地址: https://github.com/cloudwu/skynet 云风大神博客: ...

  3. JavaScript基础入门-----万字详解

    浏览器执行JS简介 浏览器分成两大部分 渲染引擎和JS 引擎 渲染引擎: 用来解析HTML与CSS,俗称内核,比如chrome浏览器的blink,老版本的webkit JS 引擎:也称为JS 解释器. ...

  4. Skynet基础入门例子详解(7)

    GateServer的使用 skynet 提供了一个通用模板 lualib/snax/gateserver.lua 来启动一个网关服务器,通过 TCP 连接和客户端交换数据. TCP 基于数据流,但一 ...

  5. STM32基础入门——GPIO详解

    目录 一.GPIO的简介 二.GPIO工作模式-----输入 1.浮空输入模式 2.上拉输入模式 3.下拉输入模式 4.模拟输入模式 三.GPIO工作模式-----输出 1.开漏输出模式 2.推挽输出 ...

  6. 【区块链开发入门】(四) Truffle详解篇2

    由于本篇篇幅较长,因此转为两篇文章.Truffle详解篇篇1请见:link 目录导航页 [区块链开发入门](一) 以太坊的搭建与运行 [区块链开发入门](二) 以太坊的编程接口 [区块链开发入门](三 ...

  7. vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...

    Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...

  8. C语言结构体与指针ppt,c语言指针和结构体:链表详解.ppt

    c语言指针和结构体:链表详解.ppt 1,第十一章 链表,2,例跳马.依下图将每一步跳马之后的位置x,y放到一个"结点"里,再用"链子穿起来",形成一条链,相邻 ...

  9. [Go语言入门] 14 Go语言goroutine和通道详解

    文章目录 14 Go语言goroutine和通道详解 14.1 goroutine 14.2 通道(channel) 声明通道变量 创建通道 通道操作 14.3 管道 14.4 单向通道 14.5 通 ...

最新文章

  1. android连接不上socket,关于socket通信的android与pc端连接,为什么我定义的socket是为空的,连接不上pc端...
  2. 在 ubuntu下面利用libpcap编程
  3. nl.basjes.parse.useragent.UserAgentAnalyzer内存泄漏问题解决
  4. 直播 | AAAI 2021:自然语言中token-aware的虚拟对抗样本训练
  5. 密度图的密度估计_箱形图、小提琴图、直方图……统统可以卡通化!
  6. warning C4819 解决方案 warning C4819: The file contains a character that cannot be represented in the cu
  7. BP神经网络从理论到应用(一):C++实现
  8. Python网络爬虫入门篇
  9. cropper(裁剪图片)插件使用(案例)
  10. 最优化问题——线性规划模型
  11. 获取微信好友头像,对其进行相应操作
  12. 一年读完100本书(1/100)《微习惯》2021-01-18
  13. QQ Tim另存为文件时闪退,错误模块ntdll.dll
  14. 帮你解读身份证号码的秘密
  15. cshop是什么开发语言_Fecshop 多语言
  16. MySQL的备份、恢复
  17. K8S中deployment和service案例
  18. Win11打开安卓子系统步骤,所遇到的问题,以及解决办法
  19. 3dMax火离妖游戏模型过程
  20. 数学分析讲义习题解答:(一)

热门文章

  1. 苹果手机恢复出厂设置在哪里?恢复出厂设置方法介绍
  2. 担心手机电池寿命,专家给出正确充电方式
  3. chart.js使用学习——柱状图(2:常用属性设置)
  4. -Djava.endorsed.dirs=D:\tomcat\apache-tomcat-9.0.8\endorsed is not supported. Endorsed standards and
  5. 无法加载文件 C:\Users\XXX\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本
  6. 11.①事件冒泡:取消冒泡event.cancelBubble=true或.sopImmediatePropagation()②事件绑定addEventListener(参数1,参2,参3)③事件传播
  7. Mysql数据库---学习总结(一)
  8. java单机武侠_Java之TankWar(单机版)历程
  9. 7-14保持安全社交距离的重要性 最小生成树板子题
  10. 青岛一中2021年高考成绩查询,青岛一中2021年中考志愿填报温馨提示