链表,一种常用的数据结构。
其优点是:可动态添加删除,大小可变,插入、删除操作方便,不会导致元素的移动,因为元素增减,只需要调整指针;缺点是元素的查改,只能通过顺次指针访问,效率比较低。
节点的定义为:
struct listnode
{
int value;
listnode *next;
};
链表的增删改查:
增加分为头插法和尾插法,头插法直接将新节点作为头,新节点的next指向原先的头节点。
尾插法,用指针遍历节点,指针指向最后一个节点,最后一个节点的next指向新节点。
删改查:都是先找到对应的节点,进行删改查。这里实现一下删除的方法,改和查是同样的道理。
最后链表的逆序打印,两种方法,第一种,链表只有next指针,只能指向下一个节点,但要打印,只能借助一个辅助栈来实现,根据栈先进后出的特性,这不正好完美。
第二种方法,能用栈来实现的方法是不是可以改成递归,保证数据量不太大的情况下,不然栈溢出了怎么办??
okokok.