1、链表和数组的区别
(1)逻辑结构:数组大小是在声明数组时就要知道;链表大小动态申请,不必事先知道。
(2)存储位置:数组(栈上一段连续的内存);链表(动态申请的堆内存,可以是不连续的内存)
(3)特点不同:数组的特点是随机访问效率高,但是删除和添加元素效率低,要移动多个元素;链表则是增加和删除结点效率高,但要访问只能从链表的头开始遍历,随机访问时效率低。
(4)数组有越界问题;链表则不会存在越界问题。
2、何时选用顺序表、何时选择链表作为线性表的存储结构为宜
如果经常查找、随机访问,则用顺序表;如果经常进行增删操作,就用链表。
3、如何使用链表头
这里就是头结点和头指针的概念了。单链表的头结点数据域没有数据(或者有链表长度信息等),头结点指针域指向第一个链表的第一个元素。
头指针就是指向链表开始结点(第一个结点)的指针。
4、如何实现单链表的插入和删除操作
这里简写啦,因为在数据结构章节有这部分的输入。
插入结点s:s->next=p->next;p->next=s;
删除结点s:r=p->next;p->next=r->next;free(p)
5、如何找出单链表中倒数第K个元素
维持两个索引,一个先行,直到第一个走了K-1个元素后,两个指针再一起移动,每次移动一步;等先行的指针为NULL时,第二个指针就指向倒数第K个了。
6、如何进行单向链表的翻转
反转后头结点变成尾结点了