6-5 链表逆置(20 分)——头插或者重开新链表头插
来源:互联网 发布:三菱plc编程指令 编辑:程序博客网 时间:2024/06/04 18:03
6-5 链表逆置(20 分)
本题要求实现一个函数,将给定单向链表逆置,即表头置为表尾,表尾置为表头。链表结点定义如下:
struct ListNode {
int data;
struct ListNode *next;
};
函数接口定义:
struct ListNode *reverse( struct ListNode *head );
其中head是用户传入的链表的头指针;函数reverse将链表head逆置,并返回结果链表的头指针。
裁判测试程序样例:
#include <stdio.h>#include <stdlib.h>struct ListNode { int data; struct ListNode *next;};struct ListNode *createlist(); /*裁判实现,细节不表*/struct ListNode *reverse( struct ListNode *head );void printlist( struct ListNode *head ){ struct ListNode *p = head; while (p) { printf("%d ", p->data); p = p->next; } printf("\n");}int main(){ struct ListNode *head; head = createlist(); head = reverse(head); printlist(head); return 0;}
/* 你的代码将被嵌在这里 */
输入样例:
1 2 3 4 5 6 -1
输出样例:
6 5 4 3 2 1
struct ListNode *reverse(struct ListNode *head){ struct ListNode *newhead=NULL, *tail=NULL,*p=head; while (p) { tail = p->next;//记录后驱 p->next = newhead; //插到前面 newhead = p;//更新 p = tail;//下一个 } return newhead;}
struct ListNode *reverse(struct ListNode *head){ struct ListNode *newhead=NULL, *now=NULL; while (head) { now = (struct ListNode*)malloc(sizeof(struct ListNode)); now->data = head->data; now->next = newhead; newhead=now; head = head->next; } return now;}
这里写代码片
阅读全文
0 0
- 6-5 链表逆置(20 分)——头插或者重开新链表头插
- 链表模板(带表头头插)
- 链表头插
- 带表头节点的循环双向链表(头插,尾插,中间插,清除,前向显示,后向显示)
- 链表头插法详解
- 单链表头插法
- 链表的插入(头插,尾插,中间插)
- 链表模板(头插模块)
- 实现链表逆序(头插)
- 实现链表逆序(头插)
- 链表之头插
- 双向循环链表的头插、中插、尾插、删除、逆序顺序显示(C++实现)
- 单链表头插法逆序
- 链表头插法编程实现
- 双链表头插法个人图解
- 单链表头插法赋值
- 线性表头插法
- 带头结点的链表头插,尾插,中间插以及删除节点
- View 用 Paint 实现的小Demo(1)
- Jmeter连接SqlServer数据库进行压力测试
- 使用for循环的嵌套使用方法打印“九九乘法表”
- 数据库字段值存储修改使用
- java学习中遇到的问题:变量的调用
- 6-5 链表逆置(20 分)——头插或者重开新链表头插
- 给出一个集合,怎么的到他的所有子集合?
- PAT——1024. 科学计数法
- ACM ICPC 2017 Warmup Contest 7(CTU Open Contest 2016)
- 常用DNS服务器提供商
- [深度学习论文笔记][IJCAI 17]Beyond Universal Saliency
- 机器学习 第九周 总结 知识点
- java开发前奏(一)简单了解
- 树莓派上MJPG-streamer的安装过程