向单向链表插入节点
前言:链表的插入过程就是把新建的节点插入到已有的链表中,鉴于此种理解,也可以把链表的创建看做是一种特殊的插入节点过程,但是具体来说,链表的插入较于链表的创建来说稍复杂一些。
一、问题描述
编写函数,将一个节点插入到一个已有学生链表中,设已有链表按学号有小到大顺序已经排列。
二、算法描述
(1) 输入数据
(2) 生成新节点
(3) 将数据存入新节点
(4) 在链表中寻找第一个大于新节点的学号
注意:该算法的难点是第四步——在链表中寻找第一个大于新节点的学号
凡事查找类问题均存在可查找和不可查找两种情况,不可查找的原因只有一个,那就是链表是空的,可查找也分为两种情况,一是找到了,二是没找到,前者说明找到了第一个比新节点学号大的节点,至于那个结点的位置另当别论,后者说明不存在比新节点学号大的节点,具体可以罗列如下:
三、代码部分
1. structure.h
// Structure
// Created by Lanyan on 20/07/2021.
// JiaoZuo
#ifndef _structure_h
#define _structure_h
#include "stdio.h"
struct stu{
//定义一个包含学号和成绩的结构体
int num; //数据域
float score; //数据域
struct stu *next;//指针域
};
#endif
2. insert.h
// insert a note into a singly linked list