记录考研数据结构学习过程中的代码实现

(参考天勤书本)

(天勤P40T1(6)法一)删除链表中重复元素(常规方法发现与前相同则删除)

(天勤P40T1(6)法二)删除链表中重复元素(全部不重复元素移动到链表前,后整体删除重复部分)

(天勤P40T1(7))删除链表中最小值

(天勤P40T1(8))不建立新结点的情况下将单链表逆置,头插法

(天勤P40T1(9))将头节点为A的单链表分解为两个单链表A,B。A只含奇数结点,B只含偶数结点

在运行某一题代码时可注释掉主函数中其他功能部分

特别注意   输出测试段代码   重复运行  需将头指针L  先归位!

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define Maxsize 100
typedef struct LNode{int data;struct LNode *next;
}LNode;//尾插法创建单链表
void createlistR(LNode *&L, int a[], int len){LNode *s, *r;int i;L = (LNode*)malloc(sizeof(LNode));L -> next = NULL;r = L;for(i = 0; i < len; i++){s = (LNode*)malloc(sizeof(LNode));s -> data = a[i];r -> next = s;r = r -> next;}r -> next = NULL;
}//天勤P40T1(6)法一)删除链表中重复元素(常规方法发现与前相同则删除)
void delsl1(LNode *C){LNode *p, *q;p = C -> next;while(p -> next != NULL){if(p -> data == p -> next -> data){q = p -> next;p -> next = q -> next;free(q);}else{p = p -> next;}}
}//   delsl2(L);//(天勤P40T1(6)法二)删除链表中重复元素(全部不重复元素移动到链表前,后整体删除重复部分)
void delsl2(LNode *C){LNode *p, *q, *r;p = C -> next;q = p -> next;while(q != NULL){while(q != NULL && q -> data == p -> data)q = q -> next;if(q != NULL){p = p -> next;p -> data = q -> data;}}q = p -> next;//断链,释放重复结点p -> next = NULL;while (q != NULL){r = q;q = q -> next;free(r);}
}//   delmin(L);//(天勤P40T1(7))删除链表中最小值
void delmin(LNode *C){LNode *premin, *pmin, *p;p = C; premin = C; pmin = premin -> next;while(p -> next != NULL){if(p -> next -> data < pmin -> data){premin = p;pmin = p -> next;}else{p = p -> next;}}premin -> next = pmin -> next;
}//(天勤P40T1(8))不建立新结点的情况下将单链表逆置,头插法
void reverse1(LNode *C){LNode *p, *q;p = C -> next;C -> next = NULL;while(p != NULL){q = p -> next;p -> next = C -> next;C -> next = p;p = q;}
}//(天勤P40T1(9))将头节点为A的单链表分解为两个单链表A,B。A只含奇数结点,B只含偶数结点
//其中A链表在主函数中已经创建为L, B链表需要在运行过程中从A链表中取下链接上,注意此时传参的区别
void split(LNode *A, LNode *&B){LNode *p, *q, *r;B = (LNode*)malloc(sizeof(LNode));B -> next = NULL;p = A ; r = B;while(p -> next != NULL){if((p -> next-> data) % 2){p = p -> next;}else{q = p -> next;p -> next = q -> next;q -> next = NULL;//特别注意!!此处不断链则取下的时q后的一整条//且由于每次测的数是p->next,所以此处无需p=p->nextr -> next = q;r = q;}}
}int main(){LNode *L, *B;int i, len = 0;int a[Maxsize];for(i = 0; i < Maxsize; i++){scanf("%d",&a[i]);len ++;if(getchar() == '\n')break;}createlistR(L, a, len);//尾插法创建单链表//   delsl1(L);//(天勤P40T1(6)法一)删除链表中重复元素(常规方法发现与前相同则删除)//   delsl2(L);//(天勤P40T1(6)法二)删除链表中重复元素(全部不重复元素移动到链表前,后整体删除重复部分)//   delmin(L);//(天勤P40T1(7))删除链表中最小值//   reverse1(L);//(天勤P40T1(8))不建立新结点的情况下将单链表逆置(头插法)split(L,B);//(天勤P40T1(9))将头节点为A的单链表分解为两个单链表A,B。A只含奇数结点,B只含偶数结点//输出链表测试全部子函数需要while(L -> next != NULL){printf("%d", L -> next -> data);L = L -> next;}//输出链表测试仅split子函数测试需要   printf("\n");while (B -> next != NULL){printf("%d", B -> next -> data);B = B -> next;}}

数据结构学习记录---天勤线性表综合应用题(2)相关推荐

  1. 2022天勤考研数据结构笔记 第2章 线性表

    2022天勤考研数据结构笔记 第2章 线性表(更新中) 第2章 线性表 2.1 结构体定义 2.2 顺序表 2.3 单链表 2.4 双链表 2.5 循环链表 2.6 逆置问题(408重要考点) 第2章 ...

  2. C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文

    数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00  浏览量:763  手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...

  3. 数据结构实验1《基于线性表的图书管理系统》

    数据结构实验1<基于线性表的图书管理系统> (visual studio 2019可运行) 输入及输出要求见<数据结构C语言(第二版)>严蔚敏版 [本文仅用于啥都看不懂还想交作 ...

  4. 数据结构(C语言)——线性表(定义,基本操作)

    数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...

  5. 数据结构 严蔚敏 第二章 线性表

    数据结构 严蔚敏 第二章 线性表 线性表:由n个(n>=0)数据特征相同的元素构成的有限序列. 线性表的类型定义表示和实现 顺序表 存储单元地址连续 随机存取 若每个元素占用 m 个存储单元,以 ...

  6. 《数据结构C语言版》——线性表详解,你一定能够看得懂学得会的宝典

    哈喽!这里是一只派大鑫,不是派大星.本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习.更好地让同样热爱编程(或是应付期末考试 狗头.jpg)的大家能够在学习阶段 ...

  7. 2012-2-24 《数据结构》读书笔记2 线性表

    "软件只不过是人的思想产物,软件可能是人能造出来的最复杂的实体"这是昨天晚上UML(统一建模语言)老师的一句话,也更加坚定了我学习软件的决心,真的有这么复杂么,其实还是自己不够用心 ...

  8. 数据结构与算法第二章 线性表、栈、队列、数组、字符串、树、二叉树、哈希表的增删查

    03 增删查:掌握数据处理的基本操作,以不变应万变 通过前面课时的学习,相信你已经建立了利用数据结构去完成时空转移的思想.接下来,你需要在理论思想的指导下灵活使用.其实,要想灵活使用数据结构,你需要先 ...

  9. 《大话数据结构》| 第3章 线性表

    目录 3.2 线性表的定义 3.3 线性表的抽象数据类型 3.4 线性表的顺序存储结构 3.4.1 顺序存储定义 3.4.2 顺序存储方式 3.4.3 数据长度与线性表长度的区别 3.4.4 地址计算 ...

最新文章

  1. SAP MM 物料主数据consumption视图数据的更新?
  2. Silverlight WCF RIA服务(三十四)身份验证、角色、个性化 5
  3. vue 单选框样式_作为一位Vue工程师,这些开发技巧你都会吗?
  4. ITK:生成具有正确面积的结构元素
  5. 解决:pip警告!DEPRECATION: The default format will switch to columns in the future.
  6. Roundcube Webmail跨站脚本漏洞(CVE-2015-5381 )
  7. 宋宝华Linux培训笔记-Linux系统开发与工具
  8. 产品出口到沙特要做SGS或BV的清关SASO证书,请问哪里办理最迅速?
  9. 推荐→可以做时间线图片的APP
  10. 【无标题】setting.json 配置
  11. iCloud账号服务器出问题了,icloud连接到服务器时出现问题(苹果id不能退出登录怎么办)...
  12. gtk 程序设计(c语言版) pdf,GTK+程序设计入门
  13. C#注册Email发送验证码详解
  14. javaswing,JAVA中国象棋网上对弈
  15. 效率倍增,5 个提高生产力的 Jupyter notebook插件
  16. 长春光机所计算机待遇,有谁知道长春光机所的工资待遇怎么样?硕士一年的收入大概是多少?...
  17. delphi 2006-05笔记
  18. Oracle 批量插入数据-插入民族数据
  19. (转)《黑客帝国完全解析》
  20. 流程图怎么做,教你制作流程图

热门文章

  1. 干货|人脸识别技术基础知识,看这里
  2. 猿创征文|我在人间编程那些年
  3. 互联网日报 | 3月5日 星期五 | 抖音成为2020欧洲杯官方合作伙伴;携程GMV连续三年全球旅企第一;华为发布好望云服务...
  4. 详细的辅助开发教程,从入门到精通
  5. win10 系统修改无线网卡MAC地址
  6. 电影成O2O圈地利刃 百度糯米影业进入加速快车道
  7. hive面试题总结(2020最新版)
  8. 如何找到winRE.wim (Win10无法重置电脑找 不到恢复环境,需要重装介质)
  9. Python学习周期一般多长?需要多久?
  10. 这几天心里颇不宁静,采的不是信号,而是寂寞