实验要求:

写出将单链表逆置的算法。即令单链表的第一个结点变为最后一个结点,第二个结点变为倒数第二个结点,…,最后一个结点变为第一个结点。

依次从键盘读入数据,逆序建立链表L;

逆置链表L(创建新的链表New保存逆置的结点);


代码解析:

主函数int main():

定义链表的长度n;

调用CreateList函数创建长度为n的链表;

调用InvertList函数将链表内元素转置并输出;

定义链表的结构体类型为LNode,规定结点的数据域和结点的指针域

定义函数struct LNode *CreatList(int n)逆位序创建链表并输出所创建的链表的元素值。

定义需要创建的链表元素个数n;

建立一个带头结点的单链表;

逆序位输入指定元素个数的链表元素数值;

输入逆序位建立链表的链表元素;

定义函数void InverList(struct LNode *L)转置链表内元素并输出。

建立一个带头结点的新链表r;

q指向链表的第一个元素;

开辟新结点s,将q的值赋给s;

令s->next为NULL并使其成为r的后续结点;

利用while循环,将q不断后移,指向链表的后续元素。开辟新结点p,将q的值         赋给p,将p插入结点s和结点i中间;

令s的指针指向p;

输出转置后的链表;


实验代码:

#include <stdio.h>
#include <stdlib.h>//定义链表类型
struct LNode{int data;                                             //结点的数据域struct LNode *next;                                   //结点的指针域
};//创建逆序链表
struct LNode *CreatList(int n)
{struct LNode *L,*p;printf("请输入逆序创建链表的元素的个数:\n");           //确定链表元素的个数scanf("%d",&n);L = (struct LNode*)malloc(sizeof(struct LNode));       L->next  = NULL;                                       //建立一个带头结点的单链表printf("请输入逆序链表元素:\n");while(n--){                                            //逆序位输入n个元素的数值p=(struct LNode*)malloc(sizeof(struct LNode));     scanf("%d",&p->data );                             //输入指定元素个数的链表元素数值p->next = L->next ;L->next =p;}printf("输出链表中的元素:\n");                         //直接输出所创建的逆序链表while(p!=NULL){if(p->next ==NULL)printf("%d\n",p->data );elseprintf("%d\t",p->data );p=p->next ;}return L;
}//转置链表内元素并输出
void InvertList(struct LNode *L)
{struct LNode *p,*q,*r,*s,*t;r = (struct LNode*)malloc(sizeof(struct LNode));     s = (struct LNode*)malloc(sizeof(struct LNode));r->next=NULL;                                         //建立一个带头结点新链表q=L->next;                                            //q指向链表第一个元素           s->data=q->data;s->next=NULL;r->next=s;while(q->next !=NULL)                                 {q=q->next;p = (struct LNode*)malloc(sizeof(struct LNode));p->data=q->data;p->next=s;r->next=p;s=p;}printf("输出转置后的链表:\n");t=r->next;                              while(t!=NULL)                                        //直接输出转置后的链表            {printf("%d\t",t->data );t=t->next ;}printf("\n");
}//主函数
int main()
{int n;struct LNode *L;L=CreatList(n);InvertList(L);
}

数据结构:单链表逆置相关推荐

  1. 【数据结构】无头节点的单链表逆置

    day1 牛客网刷题 C语言实现单链表逆置 C语言实现单链表逆置 由于一段时间没有用数据结构 刚开始有些忘记了 第一次真正在牛客网上进行调试 原来还会有调试用例 还要设置边界值 如果没有 测试也不会通 ...

  2. java数据结构之单链表逆置算法

    单链表逆置算法1 设计思想:在链表类中新加成员方法getNode(int i),用来获取指定位置的节点,新建一个空单链表,将原链表的每个节点按照从后往前的顺序依次取出,再把节点的数据依次添加到新的链表 ...

  3. c语言借助栈单链表逆置,借助栈实现单链表逆置--数据结构

    标题: 借助栈实现单链表逆置 时 限: 1000 ms 内存限制: 10000 K 总时限: 3000 ms 描述: 用链式存储实现栈的初始化.入栈.出栈.取栈顶.判栈空等操作,在主函数中借助栈的基本 ...

  4. 数据结构03:单链表逆置

    单链表逆置 单链表原地逆置 单链表利用栈逆置 .cpp文件 运行结果 单链表原地逆置 List Reverse(List L1){/*构造链表q替代L1(使得在逆置链表的时候L1本身不变)* 构造完以 ...

  5. 【数据结构】单链表逆置的详解

    单链表的逆置 将单链表逆置: 定义一个前指针和一个后指针用来辅助工作指针 //头文件 #ifndef LINKLIST_H_INCLUDED #define LINKLIST_H_INCLUDEDst ...

  6. 单链表操作10-带头结点的单链表逆置(个人学习笔记,仅供参考)

    带头结点的单链表逆置 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 设计算法Reverse( ),将带头结点的单链表A逆置,要求利用原有链表的链点,最后输出 ...

  7. 借助于栈结构将一个单链表逆置

    借助于栈结构将一个单链表逆置. 输入输出样例:1组 #1 样例输入: 5 //链表中有几个元素 1 2 3 4 5 //链表中的元素分别是什么 样例输出: 5 4 3 2 1 //逆置后输出,利用栈结 ...

  8. C语言实现不带头结点的单链表逆置的三种方法

    C语言实现不带头结点的单链表逆置的三种方法 直接循环 头插法 递归法 END! 直接循环 图片解释 ListNode* ReverseList1(ListNode *head) {if(head == ...

  9. 7-4 单链表基础应用(4)--单链表逆置

    编程实现一个简易学生信息管理系统,按如下步骤分别用自定义函数实现: (1) 根据输入信息创建单链表并输出所有结点信息.每个学生的信息包括姓名和成绩: (2) 将上一步创建的单链表逆置后并输出所有结点信 ...

最新文章

  1. react中使用create-react-app创建项目执行函数两次
  2. 数据结构:回溯--解决八皇后问题
  3. mysql 以数组的形式插入更新表
  4. when will ifm open?
  5. SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
  6. libreoffice Error: source file could not be loaded
  7. 华为交换机默认vlan都是通的吗_华为设备二层交换技术——Hybrid接口详解
  8. django 1.8 官方文档翻译: 2-5-1 管理器 (初稿)
  9. 程序员合同日期不到想辞职_辞职报告怎么写最简单?写清楚理由和时间,签上姓名就OK了...
  10. WPF杂难解 中文字体显示模糊
  11. HarmonyOS 正式登陆华为手机,4月陆续升级!
  12. 选择数据分析工具应考虑4个因素
  13. vs2010 sp1安装
  14. dojo基础:dojo/request
  15. Swagger设置密码登录
  16. docker 安装mysql,不区分大小写配置
  17. Vue中使用Tinymce-edtio
  18. 【收藏】Mimics Lnnovation Suite之导出功能
  19. 国家统计局举办开放日 称将迎接“大数据”挑战
  20. MDA(模型驱动架构)

热门文章

  1. SQL中的DQL查询语言
  2. 寻玉之旅服务器维修,穿越二十年的时空《犬夜叉-寻玉之旅》特色系统
  3. java毕业设计高校体育场馆预约管理系统设计与实现(附源码、数据库)
  4. Nvidia-P100安装驱动
  5. Hbase 数据导出到文件中
  6. Unity3d Vector3点
  7. WIN 7忘记登入密码
  8. c语言中sizeof函数的作用是,c语言中sizeof函数的用法
  9. 【C语言内功】“数据在内存中的存储“
  10. @Query与@Modifying执行更新操作