比如连表中某一段 1-2-3-4
程序会让1指向3,下一个循环的时候还会让1指向4````
= = 没看错吧
----------------解决方案--------------------------------------------------------
呵呵,其实不难理解的
[color=white]
----------------解决方案--------------------------------------------------------
程序代码:
node_t * ChangeTwoNodes(node_t *list)
{
node_t *pret=(list&&list->next?list->next:list), *p, *t;
if(pret==list) return list;
for (p=list->next; (t=p->next) && (list->next=t->next); list=t,p=list->next)
{
p->next=list;
}
p->next=list;list->next=t;
return pret;
}
~~~~~~~~~ 我的意思就是这样```
发现该过之后 虽然没有了重复赋值,但多了一个临时变量的赋值``` 看来一样`` 先吃饭 一会想想能不能更好
----------------解决方案--------------------------------------------------------
LS用我前面贴的代码接口测试一下你的函数吧.....
----------------解决方案--------------------------------------------------------
代码画画就好了。。不难理解,关键不要画错了就好。。呵呵
----------------解决方案--------------------------------------------------------
[bo][un]中学者[/un] 在 2008-5-31 20:44 的发言:[/bo]
LS用我前面贴的代码接口测试一下你的函数吧.....
LS用我前面贴的代码接口测试一下你的函数吧.....
啥意思``` 错了吗?
```````````````````````````
算法上似乎不能再精简了``
----------------解决方案--------------------------------------------------------
呵呵,没...
----------------解决方案--------------------------------------------------------
///雨燕的 node_t *pret=list->next?list->next:list, *p, *t;///
什么意思?看不懂,
我写的,典型科班写法
LNode* Change1(LNode* &HL)
{
LNode* cp,*ap;
if(HL==NULL||HL->next==NULL)
return NULL;
else
{
cp=HL;
ap=cp->next;
cp->next=ap->next;
ap->next=cp;
HL=ap;
Change(cp->next);
}
}
----------------解决方案--------------------------------------------------------
尾递归……
LS的兄弟,尾递归麻烦手工优化下嘛,又不会死……
----------------解决方案--------------------------------------------------------
~!!!!!!!!!!
----------------解决方案--------------------------------------------------------