2021-09-04

本文详细介绍了使用C语言实现链表的各种基本操作,包括创建头结点、尾插法和头插法建立链表、遍历数据域、计算链表长度、获取指定位置结点值、查找元素及位置、插入新结点和删除结点等。通过这些操作,读者可以深入理解链表数据结构及其在实际编程中的应用。
摘要由CSDN通过智能技术生成

C语言-数据结构与算法-链表的基本操作
1.创造头结点
2.尾插法建立单链表
3.头插法建立链表
4.遍历链表中所有的数据域
5.计算链表的长度
6.返回第i个结点的数据域的值(从首元结点开始)
7查找链表中是否有该元素,若果有则返回该节点
的地址(从首元结点开始)
8查找链表中是否有该元素,若果有则返回该元素所在的位置
9在第i个结点之前,插入新结点(从首元结点开始)
10删除第i的元素所在的节点(从首元结点开始)

先确定每一个结点的元素类型
每个结点里面有一个数据域,一个指针
这个指针里面存的是下一个结点的地址
代码如下
在这里插入图片描述
函数1

/创建头结点并返回该节点的地址
用calloc函数申请一块内存空间,
空间大小是Linklist类型变量(一个结点)所占大小。
再创建一个Linklist类型的指针来储存该结点地址
然后是指针域指空,最后返回该指针存的地址。
代码如下
/
在这里插入图片描述
函数2
/尾插法建立链表,该函数我们想要实现的功能是,当从键盘输入-1时,结束创建,否则会一直创建新结点,并连在前一个结点的后面(创建一个新结点,该结点的地址存放在前一个结点的指针域里)代码如下/
在这里插入图片描述
函数3
/头插法建立链表,该函数我们想要实现的功能是当从键盘输入-1的时候结束创建,否则一直创建新结点,并且每个新结点都是在头结点后面,在其它结点的前面(创建的新结点,新结点的指针域存储的是,头节点指针域里的的地址.然后使头结点的指针域存储该新结点的地址)代码如下/
在这里插入图片描述
函数4
/该函数我们想要实现功能是遍历链表中所有的数据域,如果知道遍历的次数,就用for,如果知道遍历结束的条件,就用while。我们可以用一个指针存储首元结点的地址,每遍历一次指针就指向下一个结点。当指针为NULL时,遍历结束/
在这里插入图片描述
函数5
/该函数我们想要实现的功能是返回链表的长度,先初始化一个变量count=0,用while遍历链表,每遍历一次count值加一。直到遍历结束/
在这里插入图片描述
函数6
/该函数我们想要实现的功能是,返回第i个结点的数据域的值(从首元结点开始)。我们先创建一个指针nur,存的是首元结点的地址,再定义一个计数变量j=0。然后用while一直遍历(每遍历一次指针指向下一个结点,j++)直到指针指向i位置的结点。每次遍历的条件是,j<i。为了防止i超过链表长度,条件再加一条nur!=NULL/
在这里插入图片描述
函数7
/该函数我们想要实现的功能是,返回第i个结点的地址(从首元结点开始),原理与函数6类似/
在这里插入图片描述
函数8
/该函数我们想要实现的功能是,返回元素i所在链表的位置(从首元结点开始),原理与函数6类似/
在这里插入图片描述
函数9
/该函数我们想要实现的功能是,在第i个结点前插入一个新结点。(从首元结点开始) i表示位置e表示新结点的数据域先同理函数6,使指针指向i结点前的一个结点,然后进行操作/
在这里插入图片描述
函数10
/该函数我们想要实现的功能是,删除第i个结点原理与函数9类似,要注意的是,先第i个结点的前后两个结点连起来,在删除第i个结点/
在这里插入图片描述
主函数
在这里插入图片描述

使用python中的pymsql完成如下:表结构与数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值