单链表
1,链表存储特点
① 用一组任意的存储单元来存放线性表的结点(这组存储单元既可以是连续的,也可以是不连续的)
② 链表中结点的逻辑次序和物理次序不一定相同。
2,线性表的单链表存储结构如:
3,链表建立方法(时间复杂度为O(n))
头插入法:s->data=d;s->next=head;head=s(head头指针,s新建节点)
尾插入法:s->data=d;r->next=s;r=s;(r尾节点)
带头结点及作用:
1,由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其它位置上操作一致,无须进行特殊处理;
2,无论链表是否为空,其头指针都是指向头结点的非空指针(空表中头结点的指针域空),因此空表和非空表的处理也就统一了。
单链表常用操作:
1,查询 时间复杂度为O(n)
2,插入:往节点p后插入:s->data=x;s->next=p->next;p->next=s;仅仅插入时间复杂度为O(1)
3,删除:删除r之后的节点:p=r->next;r->next=p->next;free(p)仅仅删除时间复杂度为O(1)
单链表的Java实现:
View Code
参考资料:
1,数据结构概念