链表中通常都是包含两部分,一个数据域,一个指针域。前者用于存储所需要的各种数据,后者用于存储后继结点的地址。通常有一个头指针指向链表的头结点,然后头结点的指针域指向第一个结点,最后一个结点的指针域为NULL,表示后面没有了。相比于顺序表,链表的每个结点数据所占的内存可以分布在计算机内存的各个角落,需要时动态分配。
逆序创建单链表
void CreateList_L(LinkList &L, int a[], int n)
创建单链表时,首先定义链表这一数据结构,然后再定义单链表变量。其实再定义变量时链表就已经建好了,而CreateList_L函数的本质是对这个链表赋值。即先把想存到单链表里的数据存储到数组里,然后再转存到链表里。要先定义一个指向新建立结点的指针,然后通过循环对这个结点赋值,再将L头指针指向这个新建立的结点。头插法,即把每一个新结点都插入到第一个结点之前。
求链表的长度
int ListLength_L(LinkList L)
定义一个指向结点的指针,先让它指向头结点,然后往后遍历,同时k加一。while循环遍历时限制条件是while(p);确保p指向最后一个结点时也能计数。利用指针遍历链表时指针p不能是p++,而要使p=p->next;!!!
查找元素 返回其地址
LNode *LocateElem_L(LinkList L, int e)
同样是要定义一个指针来遍历链表,while循环的限制条件是while(p&&p->next!=e) 最后返回p指针。如果没有这个元素则p==NULL;
插入节点操作
void ListInsert_L(LinkList &L, LNode *p, LNod