不借助辅助空间,直接逆序单链表
来源:互联网 发布:macbook pro 2017 知乎 编辑:程序博客网 时间:2024/05/18 04:00
这是大半年前遗留的问题,今天来解决了。
代码:
#include <stdio.h>#include <conio.h>#include <stdlib.h>//结构体定义struct list{int data;struct list *next;};typedef struct list NODE;typedef NODE *LINK;//函数原型void print_all(LINK ptr);LINK reverse(LINK head);int main(){LINK ptr,head;int num,i;ptr=(LINK)malloc(sizeof(NODE));head=ptr;//测试10个数据for(i=0;i<=9;i++){ptr->data=i+1;ptr->next=(LINK)malloc(sizeof(NODE));if(i==9) ptr->next=NULL;else ptr=ptr->next;}//输出ptr=head;print_all(ptr);//逆序单链表head=reverse(head);//输出ptr=head;print_all(ptr);getch();}//打印链表void print_all(LINK ptr){int i=0;while(ptr!=NULL){printf("%d ",ptr->data);ptr=ptr->next;}printf("\n");}//不借助辅助空间,直接逆序单链表//练手小程序,没有考虑其健壮性和容错性,请保证结点个数大于3LINK reverse(LINK head)//注意这个函数需要一个返回值,但没有完全明白这里传递地址的机制。问一下!{LINK p1=head;LINK p2=p1->next;LINK p3=p2->next;p1->next=NULL;p2->next=p1;while(p3!=NULL){p1=p2;p2=p3;p3=p3->next;p2->next=p1;}return p2;}reverse函数中有个传值的问题没有完全明白,我的理解是传递一个指针后,这个指针的指向发生了变化,所以需要返回逆序后的head。如果您知道原因,请告诉小弟我,非常感谢。
- 不借助辅助空间,直接逆序单链表
- 单链表逆序———不借助外部辅助空间递归与非递归实现
- 单链表逆序,直接翻转指针!!
- 数组的归并排序(不使用辅助空间,递归)
- 数组的归并排序(不使用辅助空间,循环)
- win7基础 环境变量的配置 不借助变量,直接添加路径的方式
- 将一句话中的单词进行倒换,标点符号不倒换,要求不使用辅助空间
- myEclipse不打开工作空间,直接打开myEclipse
- MyEclipse删除工作空间-不直接改配置
- 单链表的逆序(不带表头)
- 句子逆序,单词不逆序
- 不借助库函数 字符串逆转
- 用户空间辅助程序---热插拔
- 不开辟用于交换数据的临时空间,完成字符串的逆序
- 不开辟用于交换数据的临时空间完成字符串的逆序
- 不开辟用于交换数据的临时空间,如何完成字符串的逆序
- 不开辟用于交换数据的临时空间,如何完成字符串的逆序
- 面试:不开辟用于交换数据的临时空间,如何完成字符串的逆序
- 移植内核2.6.24.4到S3C2440
- awk中的gsub函数
- 在C#中使用SQL存储过程说明
- Java 操作CSV 文件
- apt命令的一些参数...
- 不借助辅助空间,直接逆序单链表
- 超详细的2440中断机制分析!
- 导弹拦截&&http://acm.nyist.net/JudgeOnline/problem.php?pid=79
- Linux内核结构
- 剪刀、石头、布游戏
- wifi 自动化测试脚本
- Struts-初级篇-开发注意问题及小技巧
- ChartDirector 5.0 for python 笔记【6】Circular Label Layout
- android边缓存边播放mp4