数据结构之顺序表(二)

这是接着之前的剩下来的部分:

#include <stdlib.h>
#include "SeqList.h"
#include <stdio.h>SeqList *Create_List()
{//创建一个顺序表SeqList* s = (SeqList*)malloc(sizeof(SeqList)/sizeof(char));if (NULL == s){return NULL;}//初始化顺序的成员//为顺序表分配存储空间s->list = (SeqData*)malloc(sizeof(SeqData)/sizeof(char) * INIT_SIZE);if (s->list == NULL){free(s);        //创建存储空间失败,先释放顺序表结点return NULL;}s->max_len = INIT_SIZE; s->len = 0;return s;
}void Destroy(SeqList *s)
{if (NULL == s){return;}//先释放存储空间free (s->list);//释放顺序表free (s);   
}int AgainMalloc(SeqList* s)
{if (NULL == s){return FALSE;}//新申请的空间的字节数int new_size = sizeof(SeqData)/sizeof(char) * (INIT_SIZE + INCRESS_SIZE);SeqData* tmp = (SeqData*)realloc(s->list, new_size);if (NULL == tmp){return FALSE;}s->list = tmp;s->max_len += INCRESS_SIZE;return TRUE;    
}int Insert_Last(SeqList* s, SeqData data)
{if (NULL == s){return FALSE;}//检测顺序表是否存满if (s->len == s->max_len){//扩展空间if (AgainMalloc(s) != TRUE){return FALSE;}}//插入数据s->list[s->len] = data;s->len++;return TRUE;
}int Insert_Head(SeqList* s, SeqData data)
{if (NULL == s){return FALSE;}//检查顺序表是否存满if (s->len == s->max_len){if (AgainMalloc(s) != TRUE){return FALSE;}}//进行移位int i;for (i = s->len-1; i >= 0; i--){s->list[i+1] = s->list[i];}s->list[0] = data;s->len++;return TRUE;
}int Insert_Pos(SeqList* s, int pos, SeqData data)
{if (NULL == s || pos < 0 || pos >s->len){return FALSE;}//检测顺序表是否存满if (s->len == s->max_len){if (AgainMalloc(s) != TRUE){return FALSE;}}//进行移位int i;for (i = s->len-1; i >= pos; i--){s->list[i+1] = s->list[i];}s->list[pos] = data;s->len++;return TRUE;    
}int GetData(SeqList* s, int pos, SeqData* x)
{if (s == NULL || pos < 0 ||pos >= s->len || x == NULL){return FALSE;}*x = s->list[pos];return TRUE;
}int FindData(SeqList* s, SeqData data, SeqData* x)
{if (s == NULL || x == NULL){return FALSE;}int i;int flag = 0;for (i = 0; i < s->len; i++){if (s->list[i] == data){*x = i;flag = 1;break;}}if (flag == 0){return FALSE;}return TRUE;
}int Delete_Pos(SeqList* s, int pos)
{if (NULL == s || pos < 0|| pos >= s->len){return FALSE;}//移动元素int i;for (i = pos; i < s->len-1; i++){s->list[i] = s->list[i+1];}s->len--;return TRUE;
}int Delete_Data(SeqList* s, SeqData data)
{if (NULL == s){return FALSE;}int index = -1;if (FindData(s, data, &index) == FALSE){return FALSE;}return Delete_Pos(s, index);
}int Reverse_List(SeqList* s)
{if (NULL == s){return FALSE;}int min = 0;int max = s->len - 1;SeqData tmp;while (min < max){tmp = s->list[min];s->list[min++] = s->list[max];s->list[max--] = tmp;}return TRUE;
}SeqList* Merge_List(SeqList* s1, SeqList *s2)
{if (NULL == s1 || NULL == s2){return NULL;}SeqList* s3 = (SeqList*)malloc(sizeof(SeqList)/sizeof(char));if (NULL == s3){return NULL;}//为s3分配存储空间int size = sizeof(SeqData)/sizeof(char)* (s1->len + s2->len);s3->list = (SeqData*)malloc(size);s3->len  = s1->len + s2->len;s3->max_len = s3->len;int i = 0;      //遍历 s1int j = 0;      //遍历 s2int k = 0;      //遍历 s3while (i < s1->len && j < s2->len){if (s1->list[i] < s2->list[j]){s3->list[k++] = s1->list[i++];}else{s3->list[k++] = s2->list[j++];}}while (i < s1->len){s3->list[k++] = s1->list[i++];}return s3;
}void Display(SeqList* s)
{if (NULL == s){return ;}int i;int count = 0;for (i = 0; i < s->len; i++){if (0 == i % 4){printf ("\n");}printf ("%8d", s->list[i]);}printf ("\n");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dynamics CRM 2015 站点地图公告配置实体显示名称的变更

CRM更新2015后&#xff0c;在设置里找不到公告配置了 在原来的位置上你会东西一个叫活动源配置的东西&#xff0c;点开看后就是原来的公告配置。 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 转载于:https://www.cnblogs.com/VicTang/p/4799531…

解决:liunx 光标消失(显示光标)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 2个命令可以管控光标&#xff1a; 隐藏光标 &#xff1a; echo -e "\033[?25l" 显示光标 &#xff1a; echo -e "\0…

科​目​三​路​考​操​作​步​骤

科目三路考操作步骤 一、起步前五大操作顺序&#xff1a; 1.检查手制动是否拉紧 2.踩下离合器踏板&#xff0c;挂空挡 3.开汽车电源 4.轻踩油门&#xff08;电喷车不需要&#xff09;&#xff0c;接通马达 5.发动后&#xff0c;手马上离开 二、起步顺序6个步骤&…

漫谈微服务架构:什么是Spring Cloud,为何要选择Spring Cloud

Spring Cloud是基于Spring Boot的&#xff0c;因此还在使用SpringMVC的同学要先了解Spring Boot。先上一段官话&#xff0c;Spring Cloud是一个基于Spring Boot实现的云应用开发工具&#xff0c;它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、…

数据结构之头指针链表de三种插入方式(头插法,尾插法,在pos处插入)

1、头插法&#xff1a; 流程&#xff1a;1 &#xff0c;判断传入数据是否正确 2&#xff0c;如果正确则创建一个新的节点&#xff0c;并判断节点是否创建成功 3&#xff0c;然后给节点成员变量赋值 4&#xff0c;最后让新节点变为链表的第一个节点。 代码实现: // 链表的头插…

c# 科学计数法值转换成正常值,返回字符串

/// <summary>/// 科学计数法值转换成正常值/// </summary>/// <param name"value"></param>/// <returns></returns>public string ValueScientificNotationConvert(JToken value){if (value null) return "";var …

使用 Docker 部署 Node 服务

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言   Docker 是一个开源的容器引擎。开发者可以将自己的应用以及依赖打包为一个可移植的容器&#xff0c;然后发布到 Linux 机器上。…

科目三电子考的通过率普遍偏低

据调查&#xff0c;科目三电子考的通过率普遍偏低&#xff0c;是学员们公认的最难考项目。今天小编要通过自己的所看所听分析科目三电子考通过率低的三大原因。 原因一&#xff1a;考生基本功不扎实 从历年来考试失败的理由中&#xff0c;可以发现&#xff0c;大多都出现上车、…

打印python包含汉字报SyntaxError: Non-ASCII character '\xe4' in file

因为本人主要使用Scala语言&#xff0c;但是之前同事包括老大都是使用python&#xff0c;加上python在spark的使用中的确越来越受欢迎&#xff0c;所以最近准备入坑python&#xff0c;但是装完写demo的时候出了问题&#xff0c;如下&#xff1a; 查了下发现&#xff0c;这是pyt…

数据结构之头指针链表的逆序、输出和指定位置的删除

头指针链表指定位置的删除 实现&#xff1a;1&#xff0c;先判断传入的数据是否正确&#xff0c;然后再判断是否为空表&#xff0c;最后判断pos的值是否满足题意 2&#xff0c;分删除位置为1和不为1讨论&#xff1a;为1时&#xff0c;直接将h指向第二个节点并释放第一个节点的…

软件包管理 之 fedora-rpmdevtools 工具介绍

作者&#xff1a;北南南北来自&#xff1a;LinuxSir.Org提要&#xff1a;fedora-rpmdevtools 是一款Fedora的RPM包的开发工具&#xff0c;用于Fedora Core 2.0 以上版本&#xff1b; 正文 一、fedora-rpmdevtools 介绍&#xff1b; 用于制作RPM包的工具&#xff0c;为开发者提供…

Node.js 多版本安装配置(Window、Ubuntu 、CentOS 、Mac OS、Cloud Studio)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 向大家介绍在window和Linux上安装Node.js的方法。 本安装教程以Node.js v4.4.3 LTS(长期支持版本)版本为例。 Node.js安装包及源码下载…

场外科目三考试技巧

科目三考试可以说是学车中最有用的&#xff0c;因为这和将来正式上路是完全相同的&#xff0c;所以掌握c1科目三考试技巧也是很必要的。下面就来看看小编为大家总结的场外科目三考试技巧吧。 一、考前准备 要从车头前绕过进入车内&#xff0c;并注意关牢车门&#xff0c;之后双…

数据结构之单链表(头结点)的一些常用操作(增删改查逆)

删除指定结点 流程&#xff1a;判断传入数据和pos的位置是否符题意——找到删除位置的前一个结点&#xff0c;找到后要判断所找的位置是否越界——删除指定结点。代码&#xff1a; //删除指定结点 int Delete_Pos(Node* h, int pos) {if (NULL h || pos < 1){return FALS…

cookie ? 利用cookie实现 显示上次访问时间?

二、 <%page import"java.text.SimpleDateFormat"%> <%page import"java.util.Date"%> <% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <!DOCTYPE html PUBLIC &…

Java9Java10 Java11新特性

1转载于:https://www.cnblogs.com/LXL616/p/11100177.html

数据结构之头结点链表的三种插入方式(头插法,尾插法,在pos处插入)

创建头结点 流程&#xff1a;首先创建头结点表指针并为其分配空间——并将头结点指向空&#xff0c;防止出现段错误。 代码&#xff1a; //创建头结点 Node* Create_List () {//创建头结点Node* list (Node*) malloc(sizeof(Node) / sizeof(char));if (NULL list) //检验…

JAVA 构造 MAP 并初始化 MAP、定义时就初始化

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 第一种方法&#xff1a;static块初始化 public class Demo{private static final Map<String, String> myMap;static{myMap new…

心​理​学​家​告​诉​你​:​男​女​怎​样​才​叫​合​适

心理学家认为..判断男女两个人是否适合牵手..应考虑以下10个因素.. 第一..彼此都是对方的好朋友..不带任何条件..喜欢与对方在一起.. 第二..彼此很容易沟通..互相可以很敞开地坦白任何事情..而不必担心被对方怀疑或轻视.. 第三..两人在心灵上有共同的理念和价值观..并…

回溯---分割字符串使得每个部分都是回文数

分割字符串使得每个部分都是回文数 131. Palindrome Partitioning (Medium) For example, given s "aab", Return[["aa","b"],["a","a","b"] ] 题目描述&#xff1a; 给定一个字符串&#xff0c;将其分割成回文串…