一、【链表的创建】:

【1】、空链表:

Node *createList()

{

Node *head = (Node*)malloc(sizeof(Node));

head->next = NULL;

return head;

}

【2】、头插法;

#include

typedef struct node

{

int data;

struct node *next; //next 是指针变量,指向结构体变量

}Node;

Node *createList()

{

Node *head = (Node *)malloc(sizeof(Node));//申请了堆空间

head->next = NULL;

Node *cur = NULL;

int tmp;

while (1)

{

scanf("%d", &tmp);

if (tmp == 1)

{

break;

}

cur = (Node *)malloc(sizeof(Node));

cur->data = tmp;

cur->next = head->next;

head->next = cur;

}

return head;

}

【3】、尾插法:

Node * createListByEnd(void)

{

//头节点

Node * head=(Node *)malloc(sizeof(Node));

if(NULL == head)

{

printf("mallo failer\n");

return NULL;

}

head->next=NULL;

Node * pre=head;

printf("please input data : ");

//输入数据

int data;

scanf("%d",&data);

while(data)

{

Node * cur=(Node *)malloc(sizeof(Node));

if(NULL == cur)

{

break;

}

cur->data=data;

//连接到链表的尾部

cur->next=pre->next;

pre->next=cur;

//更新前面节点

pre=cur;

//再次输入数据

scanf("%d",&data);

}

return head;

}

二、【链表的遍历和查找】:

链表的结构相对而言比较特殊,在对链表中的结点进行访问和查找的时候,必须从链表的头结点开始,按照链表结点指针域所指的顺序逐个查找结点,直到找到为止。和对数组元素的访问一样,利用循环结构对链表结点 进行遍历是一种常用的方法,中使用的就是while循环结构,循环的终止条件便是判断next指针是否为NULL(即是否已经到达了最终结点)。

【1】链表的遍历:

void traverseList(Node * head)

{

head = head->next;

while(head!=NULL)

{

printf("%d\n",head->data);

head = head->next;

}

}

【2】链表的查找:

Node *findNodeList(Node * head, int nfind)

{

while (head->next)

{

if (head->data == nfind)

return head;

head = head->next;

}

return head;

}

三、【链表的插入与求长度】:

/*

插入节点 暂时只是头插入法

*/

void insertLinkNode(Node * head,int insertData)

{

Node * curNode = (Node *)malloc(sizeof(Node));

if(NULL == curNode)

{

printf("malloc is error\n");

return NULL;

}

curNode->data=insertData;

//先保证新节点指向父节点的下一个节点

//然父节点指向新节点

//这样做的目的可以保证链表不被破坏

curNode->next=head->next;

head->next=curNode;

}

/*

获取链表长度

*/

int lengthLink(Node * head)

{

int len=0;

//首元节点

head=head->next;

while(head)

{

head=head->next;

len++;

}

return len;

}

四、【链表的删除】:

//删除链表

void deleteList(Node *head ,Node *find)

{

while (head->next != find) head = head->next;

head->next = find->next;

free(find);

find = NULL;

return ;

}

还有一些关于链表的深入,笔者将在以后继续讲。谢谢哈。

c语言 动态链表,C语言的链表(篇章之二:动态链表)相关推荐

  1. 二叉链表和职工管理系统结合_基于二叉链表的二叉树实现

    main.c// 数据结构实验三 Created by 南隹 on 2019/11/12.// Copyright © 2019 南隹. All rights reserved.//以下代码部分功能需 ...

  2. c语言动态存储分配和链表,C语言静态链表和动态链表

    1. 静态链表 结构体中的成员可以是各种类型的指针变量,当一个结构体中有一个或多个成员的基类型是本结构体类型时,则称这种结构体为"引用自身的结构体".如: struct link ...

  3. python列表输出学生姓名学号链表_c语言!!!程序设计:建立一个学生信息链表,包括学号,姓名,成绩.(实现添加,删除,查询,排序,平均)...

    展开全部 代码如下: /*用c语言链表编写一个学生信息系统程序,62616964757a686964616fe4b893e5b19e31333365656636要求输出学生的学号,姓名,性别, 学号, ...

  4. 用c语言实现链表数据保存,数据结构链表C语言实现.doc

    数据结构链表C语言实现 数学与信息技术学院2016~2017(下)学年 计科专业2015级<数据结构>实验报告 2 学号:2015201018 姓名:汪继超 实验名称线性表的链式存储结构完 ...

  5. 用链表c语言程序设计,C语言程序设计-基于链表的学生成绩管理系统

    <C语言程序设计-基于链表的学生成绩管理系统>由会员分享,可在线阅读,更多相关<C语言程序设计-基于链表的学生成绩管理系统(18页珍藏版)>请在人人文库网上搜索. 1.华北科技 ...

  6. 【语言处理与Python】1.2将文本当作词链表

    链表 -sent1=['Call','me','Ishmael','.']   这个方括号内的东西在Python中叫做链表(list,也叫做列表),他就是我们存储文本的方式.   我们可以对链表使用加 ...

  7. c语言实现可变单链表,c语言实现单链表

    c语言实现单链表 c语言实现单链表 定义 创建 销毁 清空 打印 获取长度 查询 删除第pos个结点 在第pos插入结点 定义 首先来看一看单链表的定义(看看百度的) 单链表是一种链式存取的数据结构, ...

  8. 宁采臣 c语言好爽,C语言链表的来源分析

    C语言中的链表是重点,也是难点,而且意义非凡.对链表的的抽象和恐惧是源于对它的来龙去脉的不明白.所以很有必要对它的发展渊源做透彻分析. 链表的单位是节点,而节点源于复合数据类型:结构体: 节点和结构体 ...

  9. 重排链表-c语言链表法解决

    重排链表-c语言链表法解决 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → - → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → L ...

最新文章

  1. 从超链接调用ActionScript
  2. windows下安装ElasticSearch的Head插件
  3. 常用软件整理(持续更新)
  4. GDCM:显示有关输入DICOM文件的meta元信息的测试程序
  5. fiddler插件开发
  6. E1倒换保护设备知识详解
  7. windows7原版iso镜像_一定收藏,常用操作系统原版下载地址整理,Win7 Win10 Deepin...
  8. JS修改标签中的文本且不影响其中标签
  9. maven 执行testng.xml文件失败解决问题
  10. MongoDB多条件分组聚合查询
  11. C语言强制转换与输出格式不对应问题
  12. python训练聊天机器人词库_[ ChatterBot聊天机器人 ] ChatterBot训练数据以及使用三方语料库训练数据 - pytorch中文网...
  13. Overlay network
  14. Verilog HDL 出租车计费器实现
  15. 玩转软件|通过汉化WINRAR,手把手教你如何汉化软件
  16. 1分钟学会网站采集方法详解
  17. 微信小程序学习记录——4.框架-视图层
  18. sap进阶系列(14):第一篇:财务总览之合并会计报表(1)
  19. 如何在excel中插入文件?Excel插入对象和附件有什么区别?(插入对象能直接显示内容,但我没显示?)
  20. 空调遥控器c语言源码,51单片机格力空调遥控器设计源码

热门文章

  1. Linux常用命令集锦(一)
  2. mac ipmessage
  3. MFC中控件的大小和位置自定义代码
  4. 报错:error LNK2001:unresolved external symbol _WinMain@16
  5. [leetcode] 300. Longest Increasing Subsequence (Medium)
  6. kafka入门(一)简介
  7. utility_VS2015基本操作
  8. Elasticsearch--入门-_cat命令查看节点相关信息---全文检索引擎ElasticSearch工作笔记004
  9. STM32工作笔记0057---外部中断实验
  10. springCloud工作笔记090---SpringCloud_redis配置多数据源_redis多数据源