//链表首尾节点的常规方案
//示例代码片段,不能编译
///////////////////////////////////////////////////////////////
//循环,永远非空
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) //测试是否为空