链表问题,逆序打印链表,改变链表指向方向
2014-06-04 15:45
211 查看
#include<stdio.h> #include<stdlib.h> typedef struct TreeNode { int key; struct TreeNode* next; }Node,*ptrNode; //逆序打印链表 void ReversePrint(ptrNode phead) { if(phead==NULL) return; if(phead->next!=NULL) { ReversePrint(phead->next); } printf("%d ",phead->key); } //改变链表指针方向,反向指向,时间复杂度为O(n) ptrNode ChangePtr(ptrNode phead) { if(phead==NULL) return NULL; ptrNode ptmp,pnext; ptmp=NULL; pnext=phead->next; while(phead!=NULL) { phead->next=ptmp; ptmp=phead; phead=pnext; if(pnext!=NULL) pnext=pnext->next; else break; } return ptmp; } void main() { int i; ptrNode ptmp,phead,ptr,ptrNew; phead=(ptrNode)malloc(sizeof(Node)); phead->key=0; ptr=phead; for(i=0;i<10;i++) { ptmp=(ptrNode)malloc(sizeof(Node)); ptmp->key=i+1; ptmp->next=NULL; ptr->next=ptmp; ptr=ptr->next; } ReversePrint(phead); ptrNew=ChangePtr(phead); printf("\n"); ReversePrint(ptrNew); printf("\n"); }
相关文章推荐
- 链表:检测是否有环,是否相交,删除节点,插入节点,打印节点,建立节点,节点排序,节点逆序,
- 不改变链表结构,反向打印链表
- 需要这样一个记事本-15 ReportViewer打印默认页边距、页面方向问题
- 单向链表逆序问题
- 链表逆序问题
- (转)问题:假设一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(既不是第一个,也不是最后一个节点),请将该节点从单链表中删除。
- 链表面试题逆序打印,删除无头非尾节点,非头位置插入,约瑟夫环,查找中间和倒数第k个节点
- 单链表(创建,打印,逆序,合并两个有序的链表)
- c语言链表逆序的问题
- C语言解字符串逆序和单向链表逆序问题的代码示例
- js绑定事件this指向发生改变的问题解决方法
- 链表的插入、删除、逆序打印、输出倒数第N个、链表逆序
- Acer 偶尔按下右方向键会改变屏幕亮度问题解决
- 单项链表的创建,打印,以及中间节点指向问题
- [Android界面] 屏幕方向改变资源处理问题 [
- 反转链表(不改变节点指针方向)
- 华为2013校招之哈工大威海 上机试题之一:报数问题:设有N 个人围坐一圈并按顺时针方向从1 到N 编号,从第S个人开始进行1 到M报数,报 数到第 M个人时,此人出圈,再从他的下一个人重新开始1 到 M的报数,如此进行下去直 到所有的人都出圈为止。现要打印出出圈次序。
- 链表的逆序问题
- 剑指Offer 链表相关问题--从尾到头打印链表、合并两个排序的链表
- 【链表】C++链表反转、链表逆序打印