- 9
- 0
- 约5.68千字
- 约 24页
- 2016-12-25 发布于河南
- 举报
例3.1 有一个单链表L(至少有一个结点),其头结点指针为head,编写一个函数将L逆置,即最后一个结点变成第1个结点,原来倒数第二个结点变成第二个结点……如此等等。 解:本题采用的算法是,从头到尾遍历单链表L,并设置3个附加指针p、q、r,p指向当前处理的结点,q指向p的下一个结点,r指向q的下一个结点,q、r的作用是为了防止倒置指针时,下一个结点的丢失而设置的,有了这三个指针,就可以方便地实现指针的倒置。最后将第一个结点的next域置为NULL,并将头指针指向最后一个结点,这样达到了本题的要求。 void invert( linklist head) { linklist p, q, r; p=head; q=p-next; while(q!=NULL) /*没有后继时停止*/ { r=q-next; q-next=p; p=q; q=r; } head-next=NULL; head=p; } 堆栈的最简单的表示方法是采用一维数组,为形象起见,一般在图中将堆栈画成竖直的 。 设数组名为data,其下标
原创力文档

文档评论(0)