只需一步,快速开始
主题 902|帖子 902|积分 2706
首个结点中next1存放的是第二结点的内存地址,因此用一个箭头指向第二个结点,就可以表示两个结点之间的关系。 最后一个结点的后面不再有其他结点,因此最后结点的next5指针域中没有地址内容,编程中可以用null表示。
第1个结点作为整个链表的首结点,该结点的prev1指针内容为null,表示没有前一个结点。 第5个结点作为整个链表的最后结点,next5指针内容为null,表示后续没有下一个结点。 除此之外,中间三个结点,next指针和prev指针分别指向下一个结点和前一个结点,可以实现双向查找。
查找头结点:头结点是链表的第一个结点,直接就能得到结果,因此查找头结点时间复杂度是O(1)。 查找非头结点:如果查找非头结点,则需要从头结点向后依次查找,知道整个链表的末尾,因此查找非头结点的其他结点时,时间复杂度是O(n),最坏情况下时间复杂度也是O(n)。
找到要更新的结点; 将旧数据替换成新数据。
更新头结点:单向链表更新头结点的时间复杂度是O(1); 更新非头结点:更新其他结点的最坏情况时间复杂度是O(n)。
(1). 把新结点的next指针指向原先的头结点; (2). 把新结点变为链表的头结点。
(1). 从头结点开始向后查找,找到要插入的结点的位置; (2). 新结点的next指针指向插入位置的结点; (3). 插入位置前置结点的next指针指向新结点;
(1). 从头结点开始向后,找到要删除结点的位置; (2). 找到删除结点的前一个结点和后一个结点; (3). 将要删除结点的前置结点的next指针,指向要删除元素的下一个结点;
您需要 登录 才可以下载或查看,没有账号?立即注册
举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
兜兜零元