<1> 最近参加了一次面试,让编写一个单链表操作,包括创建,删除,逆向什么的.其它的操作,这里就不写了这里把要求逆向的操作贴出来,供大家参考,同时也希望能提出意见。
<2>源程序
int converse(list *list)
{
list *tmp1,*tmp2,*tmp3;
tmp1=list;
if(tmp1->next!=null)//链表多于一个结点
{
tmp2=tmp1->next;//
if(tmp2->next!=null) //有至少三个有效节点
{ tmp3=tmp2->next; //其实每个程序都应该仔细处理“接口”或者说是“边界”的问题
tmp1->next=null;//主要设置第一个节点的next为空
tmp2->next=tmp1;
tmp1=tmp3; //tmp1和tmp2的next已经正确设置,但tmp3和tmp2还没有建立连接
}
else//有两个有效节点
{
tmp1->next=null;//主要设置第一个节点的next为空
tmp2->next=tmp1;
list->next=tmp2;
return 0;
}
}
else//链表只有一个结点即头结点,为空链表,
{
return -1;
}
while(tmp1-&