您的位置:首页 > 其它

链表中头和尾节点/指针的常规用法:插入、删除、遍历

2015-01-18 10:09 316 查看
链表中头和尾节点/指针的常规用法
循环、永远非空

头插入:head->next= head;

在x节点后插入t节点:t->next= x->next; x->next = t;

删除x后的节点:x->next= x->next->next;

遍历循环:(1) t =head;

do{ …; t = t->next; }while(t!= head);

(2)for(t= head; t != head; t = t->next) {…}

测试只有一个元素:if(head->next == head)

头指针、尾节点为空

初始化:head =NULL;

在x节点后插入t节点:if(x ==NULL) { head = t; t->next = NULL}
//空表

else{ t->next= x->next; x->next = t;}

删除x后的节点:t = x->next; x->next = t->next; free(t);

遍历循环:(1) t =head; while(t!=NULL) {…; t = t->next}

(2)for(t= head; t !=NULL; t = t->next) {…}

测试表是否为空:if(head ==NULL)

有哑元头节点,尾节点为空

初始化:head = (Node*)malloc(sizeof(*head)); head->next =NULL;

在x节点后插入t节点:if(x ==NULL) {head->next= t; t->next =
NULL}//空表

else{t->next = x->next; x->next= t}

删除x后的节点:t = x->next; x->next = t->next; free(t);

遍历循环:(1) t =head->next; while(t !=NULL) {…; t = t->next}

(2)for(t= head->next; t !=NULL; t = t->next) {…}

测试链表为空:if(head->next ==NULL);

有哑元头节点,尾节点

初始化:head = (Node*)malloc(sizeof(*head));

z= (Node*)malloc(sizeof(*z));

head->next= z; z->next = z;

插入、删除、遍历同上;

测试链表为空:if(head->next == z);

《算法:C语言实现》P57
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐