链表逆置
来源:互联网 发布:poi数据 编辑:程序博客网 时间:2024/04/30 13:04
首先贴正确的代码#include"iostream"#include <string.h>#include <stdio.h>#include <stdlib.h>using namespace std;typedef struct node { int x; node *next;}nodex;int charu(nodex *root,int cmp);void fanzhi(nodex **root);int main(){nodex* root=(nodex*)malloc(sizeof(nodex));root->x=8;root->next=NULL;for(int i=0;i<8;i++)charu(root,i);nodex *p=root;while(p){cout<<p->x;p=p->next;}cout<<'\n';fanzhi(&root);p=root;while(p){cout<<p->x;p=p->next;}}int charu(nodex *root,int cmp)//头插法{nodex* q=(nodex*)malloc(sizeof(nodex)); q->x=cmp;q->next=root->next;root->next=q;return 0; }void fanzhi(nodex **root){ nodex *pre=*root; nodex *now=(*root)->next; (*root)->next=NULL; while(now) { nodex *pre_tmp=pre; nodex *now_tmp=now; pre=now; now=now->next; now_tmp->next=pre_tmp; }*root=pre; }
想了想思路,就按着自己的思路写。。。不写不知道,一写吓一跳,这么简单地问题都难道我了,悲剧啊!!!!!! fanzhi()函数中首先写的是
while(now)
{
nodex *pre_tmp=pre;
nodex *now_tmp=now;
pre=pre->next;
now=now->next;
now_tmp->next=pre_tmp;
}
pre一下子成死循环了。
下来搞定pre了,接着刚开始的fanzhi函数是这么定义的:void fanzhi(nodex *root)
估计还有的人没注意这点:传进来的其实只是一个数,改变root的值根本不能改变root中存储的地址数要想改变root中存储的地址数,
只能这样nodex **root,传进去的是指向root的指针,*root其实就是root中存储的地址数。所以就能修改root的值了。
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 链表逆置
- 《UNIX环境编程》第十六章--网络IPC:套接字
- What should I do about my early life crisis?
- GCD
- c#读取数组中获取最大最小值方法
- tomcat7.0怎样安装admin,进而配置Datasource
- 链表逆置
- 程序编译后运行时的内存分配
- Thrift 是什么?
- Jquery 插件 方法名意义
- C/C++ 笔试、面试题目大汇总
- ibatis的CRUD代码
- 多态 数组的声明遍历与赋值 反射函数和对Entity的进一步了解
- 去掉数组中与给定元素相同的元素
- HBase 默认配置说明