//链表首尾节点的常规方案 //示例代码片段,不能编译 /////////////////////////////////////////////////////////////// //循环,永远非空 head->next = head; //头插入 t->next = x->next; x->next = t; //x节点后插入t节点 x->next = x->next->next; //删除x后的节点 t=head; do{ t=t->next; } while(t != head) //循环遍历 if(head->next == head) //测试是否只有一个元素 /////////////////////////////////////////////////////////////// //有头节点,尾节点为null head = 0; //初始化 if(x==0) {head=t; head->next = 0;} //在x节点后插入t节点 else { t->next=x->next; x->next=t;} t = x->next; x->next=t->next; //删除x后的节点 //x->next = x->next->next 表达更简单 for(t=head; t!=0; t=t->next) //遍历循环 if(head == 0) //测试是否为空 /////////////////////////////////////////////////////////////// //有哑元头节点,尾节点为null head = new node; head->next=0; //初始化 t->next = x->next; x->next = t; //x节点后插入t节点 t = x->next; x->next=t->next; //删除x后的节点 //x->next = x->next->next 表达更简单 for(t=head->next; t!=0; t=t->next) //遍历循环 if(head->next == 0) //测试是否为空 /////////////////////////////////////////////////////////////// //有哑元头节点和尾节点 head=new node; //初始化 z=new node; head->next=z; z->next=z; t->next=x->next; x->next=t; //在x节点后插入t节点 x->next = x->next->next //删除x后的节点 for(t=head->next; t!=z; t=t->next) //遍历循环 if(head->next == z) //测试是否为空