【数据结构课程作业】单链表逆置
来源:互联网 发布:淘宝试用成功要付费吗 编辑:程序博客网 时间:2024/06/06 08:53
以下是上一次的单链表就地逆置,我为了递归起来比较方便多申请了一个结点(尾指针),应该说跟老师的比起来,我不是正解,我不知道不能多申请一个哪怕一个结点。
#include <stdio.h>#include <stdlib.h>typedef struct List { int val; struct List *next;}List;void InitList(List **h, List **t){ *h = (List *)malloc(sizeof(List));//*h就是头指针的地址 *t = (List *)malloc(sizeof(List));//*t就是尾指针的地址 if(!(*h) || !(*t)) exit(-1); (*h)->next = *t; (*t)->next = NULL; printf("初始化成功\n");}List *CreateList(List *h){ int input; while(~scanf("%d", &input)) { List *p = (List *)malloc(sizeof(List)); if(!p) exit(-1); p->val = input; p->next = h->next; h->next = p; } printf("创建成功\n"); return h;}void PrintList(List *h){ List *p = h->next; while(p) { if(p->next) printf("%d ", p->val); p = p->next; } printf("\n");}void ClearList(List *h){ List *p = NULL; while(h) { p = h; h = h->next; free(p); } printf("清空完毕\n");}void InvertList(List *f, List *p){ if(p->next) InvertList(p, p->next); p->next = f;}int main(){ List *head = NULL, *tail = NULL; InitList(&head, &tail);//传入指针的地址,这是一个二级指针 printf("逆序输入数据,以EOF结束标志\n"); head = CreateList(head);//输入数据创造一个带头带尾的链表 PrintList(head); InvertList(NULL, head);//递归倒置 printf("逆置成功\n"); PrintList(tail);//尾指针变成了头指针 ClearList(tail); return 0;}
0 0
- 【数据结构课程作业】单链表逆置
- 【数据结构课程作业】双向栈
- 【数据结构课程大作业】通信录管理系统
- 课程作业
- 课程作业
- 数据结构(c++版)第一章课程总结(注:学生,作业,有错误请原谅)
- 程序课程作业
- c++课程作业
- 课程作业随笔
- 综合课程第二次作业
- 【算法课程作业说明】
- 数据结构作业。
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 数据结构作业
- 写论文“四戒”:戒杂、戒浅、戒乱、戒错——再谈科技论文写作
- 第2章-uboot for smart210读取内核的ecc问题完美解决
- 一分钟倒计时
- 时间复杂度为O(m*n)最长公共子串
- StringBuilder.append 中出现加号影响效率
- 【数据结构课程作业】单链表逆置
- Android系统编译之Makefile
- EXTJS 3.4 formPanel的column布局和 日期和星期的关系
- meta标签详解
- 大图文件Plist解析
- # 那些年不得不滚动的页面
- 第二周项目1—求旱冰场造价
- 【转载】 Java线程:Callable和Future
- js 中apply方法和call方法的详解