
简单算法设计:逆置;单链表的合并
typedef struct list{int data; struct list * next;}*pList;void reverse(pList * root){pList p1,p2=NULL,p3=NULL;p1=*root;while(p1){p3=p2; p2=p1; p1=p1->next; p2->next=p3;}*root=p2;}
◆2.22③ 试写一算法,对单链表实现就地逆置。
栈是先进后出,就是利用它的这个特点将单链表的顺序重新排列. 比如说,原来单链表是ABCD,通过栈的逆置就变成了DCBA了. 按你这样想的话的确是有点多事,但是用计算机编程序实现逆置就不能像平常想的那样,计算机只认识程序,你叫它逆置它怎么懂呢,呵呵``` 其实,栈的先进后出结果也不是一定的,比如ABC,通过栈后的结果有: CBA,ABC(进一个就出一个),ACB,BAC,BCA五种可能,但是顺序栈只有一种, 那就是CBA. 明白了吧.



