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个结点/  主函数 
|