第二章:线性表(链表)
首元结点:首个元素所在的结点
先开辟一块空间作为头结点,再让头指针指向这个头结点
再把null赋值给头指针指向的指针域(next)
循坏的条件是L指向的指针域是否存在,如果存在,则非空表,返回0,不存在则返回1,空表
先定义一个指针p,让指针p和头指针同样指向头结点,接着让头指针指向下一个结点的指针域,然后让p和p指向的结点销毁,再让一个新的指针p和头指针指向同个结点,当头指针指向不为null时,一直循环,直到头指针指向null,循环结束。
定义两个指针p,q,让p指向首元结点,再让q指向首元结点存储的下一个结点的指针域,将p删除,再定义一个新的指针p来指向和q相同的结点,q向后移动,p销毁,循环直到q无法向后移动,p销毁也就是p为null时,循环结束,最后将null赋值给头结点的指针域
定义一个指针p,再定义一个计数值i,指针p每移动一次,i加1,直到指针p指向null,返回i的值、
找到对应元素并返回,这边我有点疑惑,为什么返回的是ok,不应该返回e吗
找到对应元素并返回位置信息
找到元素并返回位置序号
不可以,会丢失ai的地址
看起来这里更java有点不一样,java中return返回的就是要的东西,而C语言返回的再上面就标注了,return ok就行了(老师讲的很仔细很容易理解)这个是在元素ai之前插入数据为e 的元素的算法
这边写的麻烦了,用一个新的指针q来指向p的next
头插法获得单链表:先创建一个头结点,将头结点的指针域置空,要将n个元素插入,创建一个新的结点,然后为新结点的数据域赋值,之后将头结点的数据域赋值给新结点的数据域,也就是null,再将新结点的地址赋给头结点的指针域,这样本来的新结点就变成了链表的最后一个元素,这样循环直到全部元素都插入
尾插法