1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef int EmenType;
  5.  
  6. typedef struct Node {
  7. int data;
  8. struct Node *next;
  9.  
  10. Node() {
  11. next = NULL;
  12. }
  13. } node, *Link;
  14.  
  15. bool Init(Link head);
  16.  
  17. bool Insert(Link, int i, EmenType e);
  18.  
  19. bool Delete(Link p, int i, EmenType &e);
  20.  
  21. void print(Link p);
  22.  
  23. void MergeList(Link la, Link lb, Link lc);
  24.  
  25. int main() {
  26. Link head;
  27. head = (Link) malloc(sizeof(node));
  28. head->next = NULL;
  29. Init(head);
  30. Insert(head, 2, 100);
  31. Link tmp = head;
  32. print(tmp);
  33. int a;
  34. Delete(head, 2, a);
  35. print(head);
  36. Link heada = (Link) malloc(sizeof(node));
  37. Link headb = (Link) malloc(sizeof(node));
  38. Link headc = (Link) malloc(sizeof(node));
  39. Init(heada);
  40. Init(headb);
  41. MergeList(heada, headb, headc);
  42. print(headc);
  43. }
  44.  
  45. void MergeList(Link heada, Link headb, Link headc) {
  46. headc->data = -1;
  47. while (heada && headb) {
  48. if (heada->data <= headb->data) {
  49. headc->next = heada;
  50. headc = heada;
  51. heada = heada->next;
  52. } else {
  53. headc->next = headb;
  54. headc = headb;
  55. headb = headb->next;
  56. }
  57. }
  58. headc->next = heada ? heada : headb;
  59. free(headb);
  60. }
  61.  
  62. void print(Link p) {
  63. while (p) {
  64. printf("%d ", p->data);
  65. p = p->next;
  66. }
  67. printf("\n");
  68. }
  69.  
  70. bool Delete(Link p, int i, EmenType &e) {
  71. int j = 0;
  72. while (j < i - 1 && p) {
  73. ++j;
  74. p = p->next;
  75. }
  76. if (!p || j > i - 1) {
  77. return false;
  78. }
  79. Link q = (Link) malloc(sizeof(node));
  80. q = p->next;
  81. p->next = q->next;
  82. e = q->data;
  83. free(q);
  84. return true;
  85. }
  86.  
  87. bool Insert(Link p, int i, EmenType e) {
  88. int j = 0;
  89. while (p && j < i - 1) {
  90. p = p->next;
  91. j++;
  92. }
  93. if (!p || j > i + 1) {
  94. return false;
  95. }
  96. Link s = (Link) malloc(sizeof(node));
  97. s->data = e;
  98. s->next = p->next;
  99. p->next = s;
  100. return true;
  101. }
  102.  
  103. bool Init(Link head) {
  104. bool flag = true;
  105. Link p = head;
  106. p->next = NULL;
  107. for (int i = 0; i < 5; i++) {
  108. if (flag) {
  109. p->data = i;
  110. flag = false;
  111. continue;
  112. }
  113. Link s = (Link) malloc(sizeof(node));
  114. s->data = i;
  115. s->next = NULL;
  116. s->next = p->next;
  117. p->next = s;
  118. p = s;
  119. }
  120. return true;
  121. }

数据结构C语言顺序表的更多相关文章

  1. 数据结构C语言版 表插入排序 静态表

    数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./*  数据结构C语言版 表插入排序  算法10.3 P267-P270  编译 ...

  2. 【数据结构】之顺序表(Java语言描述)

    之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...

  3. 【数据结构】之顺序表(C语言描述)

    顺序表是线性表的一种,它将元素存储在一段连续的内存空间中,表中的任意元素都可以通过下标快速的获取到,因此,顺序表适合查询操作频繁的场景,而不适合增删操作频繁的场景. 下面是使用 C语言 编写的顺序表的 ...

  4. 五种编程语言解释数据结构与算法——顺序表1(理论与C语言实现)

    1.线性表的分类 2.线性表的定义及其基本操作 2.1.定义:线性表是具有相同类型的n(n>=0)个元素的有序序列,其中n为表长,当n=0时,该表为空表. 2.3.线性表的逻辑结构为: 2.4. ...

  5. 五种编程语言解释数据结构与算法——顺序表3(JavaScript与Python语言实现)

    7.JavaScript语言实现 7.1.用ES6语法编写顺序表类 //1.创建类 class MyList { //1. initList(&L):初始化表.构造一个空的线性表.放回值应该是 ...

  6. 【C语言--数据结构】线性顺序表

    线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合: 2.线性表中的数据元素之间是有顺序的: 3.线性表中的数据元素个数是有限的: 4.线性表中的数据元素的类型必须相同: 定义: 线性 ...

  7. 五种编程语言解释数据结构与算法——顺序表2(java与C++语言实现)

    5.java实现方式: 5.1.顺序表的抽象结构 package com.xgp.顺序表; public interface MyList<T> { //1. initList(& ...

  8. C++数据结构学习之顺序表

    顺序表是数据结构中最基本也是应用相当广泛的一种数据结构类型.它通常包含三个私有成分,即指向数据数组的头指针.当前表长以及表的实际容量.表的头指针通常指向数据数组的基地址,通过数组的形式进行访问数据数组 ...

  9. 数据结构 单链表&顺序表

    顺序表: 一般使用数组(C语言中的数组采用顺序存储方式.即连续地址存储)来描述. 优点:在于随机访问元素, 缺点:插入和和删除的时候,需要移动大量的元素. 链表: 优点:插入或删除元素时很方便,使用灵 ...

随机推荐

  1. 远程服务器设置Mysql的操作权限

    mysql -u root -p; root用户输入密码登录mysql服务器 select host, user  from mysql.user; 查询数据库的所有用户以前权限的ip   host: ...

  2. AS报:Manifest merger failed with multiple errors, see logs

    * What went wrong:Execution failed for task ':app:processDebugManifest'. Manifest merger failed with ...

  3. step_by_step_ABP规约模式

    一段时间没有在github 上浏览ABP项目,几天前看到ABP新增规约模式,开始了解并学习文档   记录一下 Introduction 介绍 Specification pattern is a pa ...

  4. hibernate NUMBER 精度

    通过Hibernate映射实体时会根据数据库中NUMBER类型的精度,生成相应的POJO类中相对应的主键类型.经过亲测结果如下: NUMBER(1) POJO类中生成的是Boolean publicc ...

  5. linux搭建zabbix server

    一.linux配置jdk 1.安装rpm包,安装完成位置:/usr/java/jdk1.8.0_152 2.配置环境变量/etc/profile: JAVA_HOME=/usr/java/jdk1.. ...

  6. 电话号自动识别之bug解决汇总

    今天测试一个defect: “联系我们”页显示的电话号码,在不同浏览器显示效果不统一,有些浏览器自动识别电话号码并强制添加了样式. 网络搜索发现,其它website 也有类似问题,例如:http:// ...

  7. windows server 2012R2 故障转移集群配置

    配置说明: AD:10.10.1.10/24  Node-2:10.10.1.20/24 Node-3:10.10.1.30/24 zhangsan-PC:10.10.1.50/24  VIP1:10 ...

  8. Appium+python自动化获取toast消息的方法

    转载地址:https://www.cnblogs.com/shangren/p/8191879.html 1. 首先执行这个命令:npm install -g cnpm --registry=http ...

  9. web前端面试题题目

    一.各种浏览器兼容的前缀:-o-(Opera),-ms-(IE): -moz-(火狐):-webkit-(chrome) 二.存在兼容性的css属性:placeholder,主要是因为各种浏览器pla ...

  10. MySQL主备

    服务器基本环境: 两台centos6.4.iptables  diabled .selinux  disabled 两台的hosts解析 #yum install mysql -y  //这个一定要装 ...