C语言 单链表的 反序输出 与 反转
2016-02-28 12:05
260 查看
链表的反序输出(实际上链表中的内容未改变)
思想:利用递归的思想,将链表遍历至最后一个链表,然后输出,在返回上一个节点输出。
2.链表的反转:将链表中的内容反转,如1->2->3->4反转成4->3->2->1
思想:遍历一遍链表,利用一个辅助指针,记录遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经记录的指针往后依次移动继续遍历。
//定义节点类型
思想:利用递归的思想,将链表遍历至最后一个链表,然后输出,在返回上一个节点输出。
//定义节点类型 typedef struct Node { int data; struct Node* next; }Node; /*..创建链表略...*/ //逆序输出 void print_backwards(Node* head) { Node* curr=NULL; curr=head->next; if(curr==NULL) { return ; } print_backwards(curr); printf("%d\n",curr->data); }代码很简单,但主要是要靠画图来理解,特别注意输出函数的摆放位置。
2.链表的反转:将链表中的内容反转,如1->2->3->4反转成4->3->2->1
思想:遍历一遍链表,利用一个辅助指针,记录遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经记录的指针往后依次移动继续遍历。
//定义节点类型
typedef struct Node { int data; struct Node* next; }Node; void reverse(Node*head) { if(head==NULL) { return ; } Node *pre,*curr,*ne; pre=head->next; curr=pre->next; pre->next=NULL;//主要是为了响应链表输出函数。 while(curr) { ne=curr->next; curr->next=pre; pre=curr; curr=ne; } head->next=pre; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- [C/C++]反转链表
- 如何写好 C main 函数
- C#实现基于链表的内存记事本实例
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法