本节紧跟上一节:
只需要修改单向链表的两个方法就可以:
修改节点的结构:
1 /*双向链表数据结构*/ 2 struct node { 3 unsigned char item; 4 link prev,next; 5 };
一个是插入方法:
1 /** 2 * 功能:插入节点 3 * return:void 4 */ 5 void insert(link p) 6 { 7 //p的下一个是head 8 p->next = head; 9 //如果head存在 10 if(head){ 11 //head的上一个是p 12 head->prev = p; 13 } 14 //将刚插入的p赋值给head 15 head = p; 16 //p的上一个不存在 17 p->prev = NULL; 18 }
一个是删除方法:
1 /** 2 * 功能:删除节点 3 * return:void 4 */ 5 /*详细说明 6 *比如有a,b,c三个节点 7 * a->prev = NULL;a->next = b; 8 * b->prev = a;b->next = c; 9 * c->prev = b;c->next = NULL; 10 * 现在删除其中的b节点,那么 11 * a->prev = NULL; 12 * a(b->prev)->next = b->next; 13 * c(b->next)->prev = b->prev; 14 * */ 15 void delete(link p) 16 { 17 //如果p的上一个存在 18 if (p->prev) { 19 //p的上一个的下一个 等于 p的下一个 20 p->prev->next = p->next; 21 } else { 22 //p的上一个不存在那么就只剩下head,head就等于p的下一个 23 head = p->next; 24 } 25 //如果p的下一个存在 26 if (p->next) { 27 //p的下一个的上一个 等于 p的上一个 28 p->next->prev = p->prev; 29 } 30 }
浙公网安备 33010602011771号