首先,我们要知道由于链式存储是一种“乱放”式存储方式,所以单链表没有表长的定义,这也意味着相关操作不能用for循环,因为不知道循环次数,只能用while循环!!其次,由于不同于顺序存储,不是在一片地址连续内存存储数据,所以我们的操作必须要用到一个工具为我们找到下一个元素,没错,就是指针!!
基本操作还是四大类:取,读,插,删。取和读是一个玩意儿,就放一起说。不同于顺序存储,我们想在一片随意分布的数据中找到我们想要的元素,只有一种方法,那就是从第一个开始遍历,找到第二个,再找到第三个,再找到第四个,一直到我们要找的第i个,所以要先声明一个结点,让它指向链表第一个结点,再依次后移,找到取出即可,大家会发现,取和读的平均时间复杂度是O(n)。
下面分别讲一下插入与删除操作。
插入操作:
1、声明一个结点p指向链表第一个结点,依次后移找到目标位置(p=p->next)
2、若到末尾仍未找到,说明不存在,返回ERROR
3、找到后,生成空结点s,s的数据域存放插入的元素,指针域的指针指向p->next(s->next=p->next)
4、让p指向s,p->next=s,返回OK
删除操作:
1、声明一个结点p指向链表第一个结点,依次后移找到目标位置(p=p->next)
2、若到末尾仍未找到,说明不存在ÿ