当前位置: 首页 > news >正文

单链表的学习

1、头插法创建单链表

/*  随机产生n个元素的值,建立带表头结点的单链线性表L(头插法) */
void CreateListHead(LinkList *L, int n) 
{
LinkList p;
int i;
srand(time(0));                         /* 初始化随机数种子 */
*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;                      /*  先建立一个带头结点的单链表 */
for (i=0; i<n; i++) 
{
p = (LinkList)malloc(sizeof(Node)); /*  生成新结点 */
p->data = rand()%100+1;             /*  随机生成100以内的数字 */
p->next = (*L)->next;    
(*L)->next = p; /*  插入到表头 */
}
}

2、尾插法创建链表

/*  随机产生n个元素的值,建立带表头结点的单链线性表L(尾插法) */
void CreateListTail(LinkList *L, int n) 
{
LinkList p,r;
int i;
srand(time(0));                      /* 初始化随机数种子 */
*L = (LinkList)malloc(sizeof(Node)); /* L为整个线性表 */
r=*L;                                /* r为指向尾部的结点 */
for (i=0; i<n; i++) 
{
p = (Node *)malloc(sizeof(Node)); /*  生成新结点 */
p->data = rand()%100+1;           /*  随机生成100以内的数字 */
r->next=p;                        /* 将表尾终端结点的指针指向新结点 */
r = p;                            /* 将当前的新结点定义为表尾终端结点 */
}
r->next = NULL;                       /* 表示当前链表结束 */
}

3、链表中某个元素的删除

q = p->next;
p->next = q->next;


4、链表中插入某个结点

s = (LinkList)malloc(sizeof(Node));  /*  生成新结点(C语言标准函数) */
s->data = e;  
s->next = p->next;      /* 将p的后继结点赋值给s的后继  */
p->next = s;          /* 将s赋值给p的后继 */

相关文章:

  • 单链表的排序+手机通讯录源码
  • QT模式对话框
  • Qlable显示文本和图片
  • 工具按钮QToolButton
  • 组合框
  • 单行文本框+按钮实现用户登录
  • 勾选复选框后执行某一个操作
  • 点击按钮显示hello world
  • 文件对话框---做一个简单的文本编译器(1)
  • 系统调用与用户接口API
  • 完美解决QT+VS2013中文显示乱码
  • 字符串,QT字符串类,c++字符串类之间的转换
  • 文件对话框---做一个简单的文本编译器(2)
  • 文件对话框---做一个简单的文本编译器(3)
  • 缓冲文件系统和非缓冲文件系统
  • [译] React v16.8: 含有Hooks的版本
  • EOS是什么
  • js算法-归并排序(merge_sort)
  • Laravel 中的一个后期静态绑定
  • Netty源码解析1-Buffer
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 反思总结然后整装待发
  • 力扣(LeetCode)56
  • 如何使用 JavaScript 解析 URL
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 数据结构java版之冒泡排序及优化
  • 我这样减少了26.5M Java内存!
  • 小李飞刀:SQL题目刷起来!
  • 1.Ext JS 建立web开发工程
  • 2017年360最后一道编程题
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • ​configparser --- 配置文件解析器​
  • ​io --- 处理流的核心工具​
  • ###C语言程序设计-----C语言学习(3)#
  • (3)(3.5) 遥测无线电区域条例
  • (C++)八皇后问题
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (十)T检验-第一部分
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Linux下编译安装log4cxx
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET 反射 Reflect
  • .NET 中创建支持集合初始化器的类型
  • .NET项目中存在多个web.config文件时的加载顺序
  • .skip() 和 .only() 的使用
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @Validated和@Valid校验参数区别