链表结构:
动态数据结构:由一系列节点组成
每一个节点包括数据域和指针域。数据域为当前节点的数据,指针域为指向下一个节点的地址
struct ListNode{
int data;
ListNode* next;
};
链表第一个节点的地址为头指针head,结束节点的指针域为node->next=NULL;
链表和数组区别:
数组:连续存储单元。优点:可以对元素随机访问。缺点:插入或删除引起大量数据移动,空间效率低。
在数组中查找某一 元素可以根据下标在O(1)时间内找到第i个元素。
链表:非连续存储单元,动态数据结构。优点:方便插入和删除。每添加一个节点分配一次内存,充分利用计算机内存空间。
在链表中找指定元素只能从头节点开始,沿着指针遍历,时间效率为O(n)。
链表操作:
遍历链表
ListNode *p=head;
while(p!=NULL){
p=p->next;
}