# include <stdio.h>
# include <stdlib.h>
typedef int E;
/**
* 带头结点的链表
* 1.初始化链表
* 2.链表的插入:在指定位置index上插入元素(难点)
* 3.链表的删除:删除指定位置index上的元素
* 4.获取指定节点位置的元素
* 5.根据元素获取指定位置(设定元素唯一)
* 6.获取链表总长
*/
struct ListNode{
E e; //保存当前元素
struct ListNode * next; //指向下一节点的指针
};
typedef struct ListNode * Node; //为结点指针起别名
//初始化链表
void initNode(Node head){
head -> next = NULL; //头节点默认下一个为NULL
}
//插入链表
//head是头节点,e是待插入元素,index是待插入下标
_Bool insertNode(Node head,E e,int index){
if(index < 1) return 0;
//寻找前驱节点
while(--index){
head = head -> next;
if(head == NULL) return 0;
}
Node node = malloc(sizeof (struct ListNode));//创建一个新的节点,申请内存
if(node == NULL) return 0; //处理申请失败
node -> e = e;
node -> next = head -> next;
head -> next =