有两种方法:

一是:用头插法建立单链表,自然而然就实现了逆置的动态链表。

代码:

#include<stdio.h>
#include<malloc.h>
typedef int datatype;
typedef struct node
{datatype data;struct node * next;
}linklist;linklist *creatlistf()
{int n;linklist * head,*s;head=NULL;printf("请输入要插入的结点个数:");scanf("%d",&n);printf("请输入%d个结点:",n);while(n--){s=(linklist *)malloc(sizeof(linklist));scanf("%d",&s->data);s->next=head;head=s;}return head;
}void show(linklist *head)
{linklist *p;p=head;while(p!=NULL){printf("%4d",p->data);p=p->next;}
}
int main()
{linklist *head;head=creatlistf();show(head);printf("\n");return 0;
}

二是:1、尾插法建立单链表  2、逆置单链表

第2小步的过程是(以单链表  head->1->2->3->4->NULL为例):

  1. 断开head->1的指针
  2. 将2放到1前,此时   2->1->NULL
  3. 将3放到2前,此时   3->2->1->NULL
  4. 将4放到3前,此时   4->3->2->1->NULL
  5. 重新添加头结点head,实现逆置:head->4->3->2->1->NULL
代码:
#include<stdio.h>
#include<malloc.h>
typedef int datatype;
typedef struct node
{datatype data;struct node *next;
}linklist;linklist *creatlistr()
{
//  datatype elem;int n;linklist *head,*s,*r;head=(linklist *)malloc(sizeof(linklist));r=head;printf("请输入要插入的结点的个数:");scanf("%d",&n);printf("请输入%d个结点:",n);while(n--){s=(linklist *)malloc(sizeof(linklist));scanf("%d",&s->data);r->next=s;r=s;}r->next=NULL;return head;
}void reverseLinklist(linklist *head)
{linklist *y,*r,*t;t=NULL;r=NULL;y=head->next;head->next=NULL;    //断开头指针while(y!=NULL)      //从第一个结点起,将后边的结点依次放到最前边,实现逆置{t=y->next;y->next=r;r=y;y=t;}head->next=r;     //重新链接上头结点,保证最初链的完整
}void show(linklist *head)
{linklist *p;p=head->next;while(p!=NULL){printf("%4d",p->data);p=p->next;}
}
int main()
{linklist *head;head=creatlistr();reverseLinklist(head);show(head);printf("\n");return 0;
}

设计一代码,逆置带头结点的动态单链表L相关推荐

  1. 已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值x为的结点插入到表L中,使L仍然有序。

    创建链表,main函数中通过while循环找出该插入的位置,插入.应注意L头节点位置的变化,利用一个ptr来记录L的头节点. /*已知带头结点的动态单链表L中的结点是按整数值递增排列的,试写一算法将值 ...

  2. (不带头结点的)单链表增删查改,逆置单链表(两种方法),求两个单链表的第一个公共结点,合并两个单链表,单循环链表中判断第一个入环点,约瑟夫环

    补充了每个算法的基本思想,并且画了思路图,源代码都经过调试成功 1.SlistNode.c文件 (1) (不带头结点的)单链表增删查改 #include "SlistNode.h" ...

  3. 创建一个不带头结点的循环单链表并进行相关操作

    所谓循环链表就是最后一个节点的指针域不是指向空,而是指向第一个节点,这样就实现了循环. 下面是c语言代码实现 LinkList create_linklist() {int len; //用来存储节点 ...

  4. (不带头结点的)单链表逆置

    ListNode* NotHeadReverse(LinkList head) {if (head == NULL || head->next == NULL){return head;}Lis ...

  5. 王道综合题17.设计一个算法用于判断带头结点的循环双链表是否对称及其注意思考:while循环第二个判断条件易误写成p->next!=q,分析这样会产生什么问题。

    算法思想: 让p从左向右扫描,q从右向左扫描,直到它们指向同一结点(p==q,当循环双链表中结点个数为奇数时)或相邻(p->next=q或q->prior=p,当循环双链表中结点个数为偶数 ...

  6. 数据结构:假设有一个带头结点的单链表L,每个结点值由单个数字、小写字母和大写字母构成。设计一个算法将其拆分成3个带头结点的单链表L1、L2和L3,L1包含L中的所有数字结点,L2包含L中的所有小写字母

    假设有一个带头结点的单链表L,每个结点值由单个数字.小写字母和大写字母构成.设计一个算法将其拆分成3个带头结点的单链表L1.L2和L3,L1包含L中的所有数字结点,L2包含L中的所有小写字母结点,L3 ...

  7. 设计一个算法,删除一个单链表L中元素值最大的结点(假设最大值结点是唯一的)

    设计一个算法,删除一个单链表L中元素值最大的结点(假设最大值结点是唯一的). #include <stdio.h> #include<malloc.h> typedef str ...

  8. 将栈S中的元素逆置,使用额外的一个栈L和非数组变量

    /*将栈S中的元素逆置,使用额外的一个栈L和非数组变量*/ #include<stdio.h> #include<stdlib.h> #include<time.h> ...

  9. 带头结点头部插入创建链表

    /*创建一个带头结点的链表,头部插入法创建*/ #include<stdio.h> #include<stdlib.h>#define DataType chartypedef ...

最新文章

  1. 获取GridView中的某列值
  2. java设置虚基类的目的_设置虚基类的目的是( )。
  3. mybatis plugins_[MyBatis] SpringBoot 整合Mybatis
  4. SpringBoot2.1+SpringCloud:注册中心搭建(Eureka)
  5. Python连续攀升,其他的脚本语言去哪了?
  6. 利用计算机制作多媒体最后一步,福建省高中会考 多媒体技术应用 选择题专项练习十一(201206)(有答案)...
  7. 只要沾上婚恋焦虑,她们就王者变青铜
  8. Python性能加速
  9. linux读usb转ttl串口数据,ubuntu16.04使用USB转TTL(ch340)串口转usb调试过程
  10. 智课雅思短语---一、be no exception
  11. 阿里大文娱宣布成立游戏事业群;茅台瘦身停产155个品牌;苹果iPhone 8硬件成本曝光丨价值早报
  12. SharedPreferences in credential encrypted storage are not available until after user is unlocked
  13. python一张纸折叠到珠峰高度_一张普通纸折叠27次后会是什么样?专家:厚度超过珠穆朗玛峰...
  14. linux堆栈有什么作用,嵌入式世界里,堆栈的作用和意义
  15. echarts-半圆
  16. vue如何通过NodeJs本地获取微信access_token及签名,并调用微信接口
  17. linux配置限额超过7mb警告,centos7.x的磁盘限额配置
  18. 3_01_GLib库入门与实践_测试框架
  19. GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
  20. 中国黑色金属行业产量需求与十四五战略规划报告2022版

热门文章

  1. redis是什么_什么是Redis?为什么我们要用Redis?
  2. 在美国本科 计算机排名2015,(word)2015年美国大学专业排名汇总-以计算机专业排名为例.doc...
  3. addcslashes php,php addcslashes函数怎么用
  4. python xlutils函数,python3:xlrd、xlwt、xlutils处理excel文件
  5. 交换机和路由器的区别是什么?
  6. 2M线路保护实现与应用
  7. 为什么要使用工业以太网交换机?
  8. hdmi光端机运用于多媒体信息发布系统案例介绍
  9. [渝粤教育] 广东-国家-开放大学 21秋期末考试财务管理10164k2 (2)
  10. 【渝粤教育】国家开放大学2018年秋季 1317T社会工作行政(本) 参考试题