//在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素,例如:(7,10,10,21,30,42,42,51,70)将变为(7,10,21,30,42,51,70)

include

include

typedef struct LNode

{

int data;

struct LNode *next;

} LNode, *LinkList;

LinkList List_TailInsert(LinkList L)

{

int x; //设元素类型为整型

L = (LinkList)malloc(sizeof(LNode));

LNode *s, *r = L; //r为表尾指针

printf("请输入表元素(以999结尾):");

scanf("%d", &x); //输入结点的值

while (x != 999) //输入999表示结束

{

s = (LNode *)malloc(sizeof(LNode));

s->data = x;

r->next = s;

r = s; //r指向新的表尾结点

scanf("%d", &x);

}

r->next = NULL; //尾结点指针置空

return L;

}

void print(LinkList L)

{

while (L->next != NULL)

{

L = L->next;

printf("%d ", L->data);

}

}

void Del_Same(LinkList L) //L是递增有序的单链表,本算法删除表中数值相同的元素

{

LNode p = L->next, q; //p为扫描工作指针

if (p == NULL)

{

return;

}

while (p->next != NULL)

{

q = p->next; //q指向pr的后继结点

if (p->data == q->data) //找到重复值的结点

{

p->next = q->next; //释放q结点

free(q); //释放相同元素值的结点

}

else

{

p = p->next;

}

}

}

int main()

{

LinkList L, A, B;

LNode *p;

int e, i;

A = (LinkList)malloc(sizeof(LNode));

A = List_TailInsert(L);

printf("尾插法建立的单链表:");

print(A);

printf("\n");

Del_Same(A);

printf("删除相同元素后:");

print(A);

printf("\n");

return 0;

}

//运行结果:

WX20200720-132910.png

c语言递增20,2020-07-20(C语言)数据结构-在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元素...相关推荐

  1. 在一个递增有序的线性表中,有数值相同的元素存在。若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素。

    在一个递增有序的线性表中,有数值相同的元素存在.若存储方式为单链表,设计算法,去掉数值相同的元素,使得表中不再有重复的元素.例如(7,10,10,21,30,42,42,42,51,70)将变为(7, ...

  2. 线性表之链式存储结构_单链表相关算法

    在存储结构上,不需要连续的存储空间,需要上一个结点的指针域 指向下一个结点即可,找到一个结点就可以找到下一个结点. 学习教材是大话数据结构,加上自己的一些个人理解.这个算法 有点绕,需要对指针 相关内 ...

  3. 有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列。

    题目要求:有序表A和B,其元素均按照从小到大升序排列,编写一个算法将它们合并成一个顺序表C,要求C的元素也是从小到大的升序排列. 代码实现: void merge(SqList A,SqList B, ...

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

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

  5. c语言单链表设计报告,单链表实验报告

    <数据结构>实验报告二 分校: 学号: 日期: 班级: 姓名: 程序名: L2311.CPP 一.上机实验的问题和要求: 单链表的查找.插入与删除.设计算法,实现线性结构上的单链表的产生以 ...

  6. 2.3线性表的链式存储和运算—单链表应用举例

    例2.5 已知单链表H,写一算法将其倒置.即实现如图2.22的操作.(a)为倒置前,(b)为倒置后. 算法思路:依次取原链表中的每个结点,将其作为第一个结点插入到新链表中去,指针p用来指向当前结点,p ...

  7. 线性表的链式存储结构以及单链表的插入和删除原理实现

    线性表的链式存储结构 线性表中的每个元素最多只有一个前驱元素和一个后继元素(其逻辑结构),因此可以采用链式存储结构存储. 链表 线性表的链式存储结构称为链表.在链表中每个结点不仅包含有元素本身的信息( ...

  8. php链表删除元素,PHP之从反向删除单链表元素的问题谈起

    在完成一个单链表的删除指定元素的题目中,我发现了一件神奇的事情,php对象赋值给另外一个变量后,可以如同引用传值一般继续利用新的变量来实现链表的链接. 后面经过查证后发现: PHP7.0版本除了对象, ...

  9. 链表的特点,单链表的定义、存储结构,单链表的基本操作(判断链表是否为空、销毁链表、清空链表、求链表表长、查找、插入、删除,建立单链表)

    目录 一.链表(链式存储结构)的特点 二.单链表的定义和表示 1.带头结点的单链表 2.单链表的存储结构 三.单链表基本操作的实现 1.单链表的初始化(带头结点的单链表) 2.补充单链表的几个常用简单 ...

最新文章

  1. html标签anchor,浏览器端-W3School-HTML:HTML DOM Anchor 对象
  2. C/C++代码的混合使用
  3. webview加载php文件,HYWebview下载自定义文件教程
  4. 30分钟学会使用grunt打包前端代码
  5. 2020 年,你还在使用 Java 中的 SimpleDateFormat 吗?
  6. 如何保存ISE综合后的RTL schematic为pdf
  7. 小甲鱼 python11讲作业
  8. 高性能`锁库存`/`释放库存`重构实战
  9. 约瑟夫环问题:有n个人围成一圈,顺序编号。从第1个人开始报数(从1-3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位?
  10. 超级电容充放电时间计算
  11. 人脸识别和人脸检测的区别
  12. RFID图书馆藏书防盗安全门门禁系统的应用分析
  13. 群晖NAS跨存储空间移动共享文件夹(NAS新增磁盘)
  14. 数字金额大写转换Java工具类
  15. verilog练习:hdlbits网站上的做题笔记(6)
  16. 灰色关联度分析法(GRA)_python
  17. es6相关面试题:1.rest参数;2.new.target;3.object.defineProperty与Proxy的区别;4.Reflect对象作用;5.lterator迭代器;6.async
  18. 数组转对象 和 对象转数组的简单处理
  19. TSDF算法原理及源码解析
  20. oracle 中的rollback,oracle中rollback的使用

热门文章

  1. GLSL Optimizer
  2. [UOJ50]链式反应
  3. 大型分布式C++框架《三:序列化与反序列化》
  4. 使用keepalived搭建mysql主从备份、切换
  5. python画图怎么调色_Python气象数据处理与绘图(19):如何使用NCL色板(调色盘思路相同)...
  6. 多线程是并行还是并发_并发,并行,线程,进程,异步和同步有相关性吗?
  7. 选择分集matlab程序,瑞利衰落信道下采用MRC分集误码性能Matlab程序
  8. php面向对象受保护,php面向对象二之封装,protected ,public,private权限管理
  9. 原始的DSH深度哈希代码
  10. 乌班图安装pycharm