数据结构-顺序表(C语言实现)

主函数代码(main.c)

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include "sqlist.h"
int main()
{sqlist *list= NULL,*list_next= NULL;int pos = 0;int i, err, value;int arr[10] = { 10,20,30,40,50,60,70,80,90,100 };int arr_next[10] = { 11,22,33,44,55,66,77,88,99,111 };//创建一个顺表list,并初始化list = create_sqlist();if (list == NULL){fprintf(stderr, "create_sqlist()failed\n");}for (i = 0; i < 10; i++){add_sqlist(list, &i);}for (i = 0; i < sizeof(arr) / sizeof(*arr); i++){if ((err = insert_sqlist(list, 2, &arr[i]))!=0){if (err = -1){fprintf(stderr, "The arr is full\n");}else if (err = -2){fprintf(stderr, "The pos you want to insert is wrong\n");}else{fprintf(stderr, "ERROR\n");}}}display_sqlist(list);/*根据下标删除元素部分测试代码,pos==0跳出循环*//*do {printf("请输入您要删除的元素下标从1开始\n");scanf("%d", &pos);err = delete_sqlist(list, pos);display_sqlist(list);} while (pos);*//*给出下标查找元素部分测试代码,pos==2000退出循环*///while (1)//{//	scanf("%d", &pos);//	find_sqlsit(list, pos);//	if (pos == 2000)//	{//		break;//	}//}/*给出元素查找下标部分测试代码,查找失败退出循环*//*while (1){printf("请输入您要查找的元素\n");scanf("%d", &value);pos=find1_sqlist(list, &value);if (pos == 0){printf("查找失败,顺序表中没有该元素\n");break;}else if (pos == -1){printf("查找失败, 顺序表为空\n");}else {printf("%d的下标时%d\n", value, pos);}}*///创建一个顺表list_next,并初始化list_next = create_sqlist();if (list_next == NULL){fprintf(stderr, "create_sqlist()failed\n");}for (i = 0; i < 10; i++){add_sqlist(list_next, &i);}for (i = 0; i < sizeof(arr_next) / sizeof(*arr_next); i++){if ((err = insert_sqlist(list_next, 2, &arr_next[i])) != 0){if (err = -1){fprintf(stderr, "The arr is full\n");}else if (err = -2){fprintf(stderr, "The pos you want to insert is wrong\n");}else{fprintf(stderr, "ERROR\n");}}}display_sqlist(list_next);union_sqlist(list, list_next);display_sqlist(list);destroy_sqlist(list_next);destroy_sqlist(list);}

sqlist.h文件代码(负责函数声明)

#ifndef SQLIST_H__
#define SQLIST_H_
#define MAX_LENGTH 1024
typedef int datatype;typedef struct sqlist
{datatype data[MAX_LENGTH];int size;
}sqlist;
sqlist* create_sqlist(void);
void create_sqlist1(sqlist *ps);//创建顺序表
void display_sqlist(sqlist *ps);//打印顺序表
int add_sqlist(sqlist *ps,datatype *num);//顺序表结尾添加元素
int delete_sqlist(sqlist *ps,int pos);//删除顺序表pos处的元素
int insert_sqlist(sqlist *ps,int pos,datatype *num);//顺序表pos处插入元素
void destroy_sqlist(sqlist *ps);//销毁顺序表
int find_sqlsit(sqlist *ps,int pos);//给出下标找元素
int find1_sqlist(sqlist *ps, datatype* value);//给出元素查下标
int setempty_sqlist(sqlist* ps);//顺序表置为空
int union_sqlist(sqlist* list1, sqlist* list2);//顺序表的合并
#endif

sqlist.c文件代码(负责函数定义)

#define  _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
#include "sqlist.h"
sqlist* create_sqlist(void)
{sqlist *ps;ps=(sqlist*)malloc(sizeof(sqlist));if (ps == NULL){return NULL;}else{ps->size = 0;return ps;}
}void create_sqlist1(sqlist *ps)
{ps = malloc(sizeof(sqlist));if (ps == NULL){return;}else{ps->size = 0;return;}
}void display_sqlist(sqlist *ps)
{if (ps->size == 0){printf("数组为空\n");return ;}int i = 0;printf("数组中元素个数为%d\n", ps->size);printf("数组中的元素依次为:\n");for (i = 0; i < ps->size; i++){printf("%d : %d\n", i + 1, ps->data[i]);}
}
int  add_sqlist(sqlist *ps,datatype *num)
{ps->data[ps->size] = *num;ps->size++;//printf("元素添加成功\n");return 0;}int insert_sqlist(sqlist *ps, int pos, datatype *num)
{int j = 0;if (ps->size == MAX_LENGTH){return -1;}if (pos < 0 || pos > ps->size){return -2;}for (j = ps->size;j > pos;j--){ps->data[j] = ps->data[j-1];}ps->data[pos] = *num;ps->size++;/*printf("元素插入成功\n");*/return 0;}int  delete_sqlist(sqlist *ps, int pos)
{int i = 0;pos = pos - 1;if (ps->size == 0){printf("删除失败, 顺序表为空\n");return -1;}if (pos<0 || pos>=ps->size){printf("删除失败,pos处没有元素\n");return -2;}for (i = pos; i < ps->size-1; i++){ps->data[i] = ps->data[i + 1];}ps->size--;printf("pos处的元素删除成功\n");return 0;
}//给出下标找元素
int find_sqlsit(sqlist *ps,int pos)
{if (ps->size == 0){printf("查找失败, 顺序表为空\n");return -1;}if (pos <= 0 || pos > ps->size){printf("查找失败,pos处没有元素\n");return -2;}printf("顺序表中第%d个元素为%d",pos, ps->data[pos -1]);printf("查找成功\n");return 0;
}//给出元素查下标
int find1_sqlist(sqlist *ps, datatype* value)
{int i = 0;if (ps->size == 0){return -1;}for (i = 0; i < ps->size; i++){if (ps->data[i] == *value){return i + 1;}}return 0;
}int setempty_sqlist(sqlist* ps)
{ps->size = 0;return 0;
}int union_sqlist(sqlist* list1, sqlist* list2)//顺序表的合并
{int i = 0;//list1后面追加list2中与list1中不同的元素//list1 12 34 56 78 90//list2 23 90 45 67 78 //合并后的结果list1 12 34 56 78 90 23 45 67 //思路:先查找在插入//查找:list1中是否有list2中第i个元素,若有则不插入,若无则插入if (list2 == NULL&&list1 !=NULL) {printf("list1与list2合并成功\n");return 0;}if (list1 == NULL){printf("list1与list2合并失败\n");return -1;}for (i = 0; i < list2->size; i++){if ((find1_sqlist(list1, &list2->data[i])) <= 0){insert_sqlist(list1, list1->size, &list2->data[i]);}}printf("list1与list2合并成功\n");return 0;
}void destroy_sqlist(sqlist *ps)
{free(ps);ps = NULL;}

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

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

相关文章

shell的logo含义_Shell(壳牌石油)标志历史

荷兰皇家壳牌集团(Royal Dutch Shell&#xff0c;又译蚬壳)是世界第二大石油公司&#xff0c;总部位于荷兰海牙。荷兰皇家壳牌集团由荷兰皇家石油与英国的壳牌两家公司合并组成。荷兰皇家石油于1890年创立&#xff0c;并获得荷兰女王特别授权&#xff0c;因此被命名为荷兰皇家石…

无用的设计模式之装饰者模式

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 装饰者设计模式本来是很常用的模式&#xff0c;常用到随处可见&#xff0c;jdk的bio设计都是遵循这个模式的&#xff0c;偶然的机会发现&#xff0c;貌似jdk中bio的装饰者模式和设计模式中的装饰者设计模式却有…

winform 程序制作自己的数字签名(续)

在上一篇文章《winform 程序制作自己的数字签名》中我们已经可以得到我们程序定制的数字签名了&#xff0c;但是比较讨厌的是每次编译之后&#xff0c;数字签名需要重新手动添加。 我们需要的是在程序编译时自动添加数字签名。 那实际上vs已经提供了此功能&#xff0c;具体操作…

转-HTC 手机生产日期,产地查询 以及 SN码 IMEI码 查询等问题汇总

问&#xff1a;什么是IMEI码&#xff1f;什么是SN码&#xff1f; 答&#xff1a;IMEI码&#xff0c;国际移动装备辨识码&#xff08;International Mobile Equipment Identity number&#xff0c;IMEI&#xff09;。SN码即Serial Number&#xff0c;产品序列号。 问&#xff1a…

数据结构带头结点单向不循环链表(C语言版)

main.c,负责测试 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include<stdlib.h> #include "linklist.h" int main() {LNode* listNULL;int i 0,err 0;datatype a 40,return_value0;datatype arr[] { 20,10,90,100,50,40,20,60,70,80 }…

Django设置TIME_ZONE和LANGUAGE_CODE为中国区域

Django默认的timezone是 TIME_ZONE America/Chicago LANGUAGE_CODE en-us 设置为中国区域&#xff1a; TIME_ZONE Asia/Shanghai LANGUAGE_CODE zh-cn 另外你可以根据情况设置 \Lib\site-packages\django\conf\global_settings.py 里面的时区转载于:https://www.cnblogs.co…

每天10分钟用python学数据分析_用Python做数据分析,Numpy,Pandas,matp

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼用Python做数据分析&#xff0c;Numpy&#xff0c;Pandas&#xff0c;matplotlib是怎么也绕不开的三个包&#xff0c;我最开始学习pandas是看的《利用Python进行数据分析》&#xff0c;看了好几遍&#xff0c;不是从头到尾看了好几…

使用Shell脚本查询服务器硬件信息

1、为了方便查询服务器的硬件信息&#xff0c;将需要查询的内容整理成Shell脚本&#xff0c;输出自己想要的格式。其实就是通过dmidecode命令输出&#xff0c;然后通过sed&#xff0c;awk&#xff0c;cut命令的处理。2、此脚步适用于HP DL系列的服务器&#xff0c;Dell PowerEd…

SQL Server 数据库维护脚本合集[005]-删除数据库所有用户表

--*****************************************************************************-- 作 者: qwu;-- 用 途: 删除数据库所有用户表;-- 版 本: v1.0-- 创建日期: 2011-3-23;-- 用 法: 设置use [数据库名],-- 注 意: !!!!!!!!慎用!!!!!!!!!;-- 修改历史: …

数据结构无头结点单向不循环链表(C语言版)

main.c(负责测试&#xff09; #include <stdlib.h> #include <stdio.h> #include <time.h> #include "nohead.h" int main() {LNode *list NULL;struct score_st data[10],mydata,data1;int i 0;srand((unsigned)time(NULL));//初始化数组for (…

ad network

全称&#xff1a;Advertising network。即“在线广告联盟”。一种介于想出售广告空间的网站与想在网站上刊登广告的广告主之间的平台。比较知名的公司有Google的AdSense、好耶、仁合传媒、传漾Adsame以及ValueClick等 Ad Network的本质真相是什么? 随视传媒COO薛晨女士在11月1…

python123查找指定字符输入m_大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编....

Presentation on theme: "大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编."— Presentation transcript:大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编第五章 字符串与正则…

C#生成带Logo二维码

1.下载ThoughtWorks.QRCode引用并添加在工程中 2.在实现类QRCodeEncoderDemo中引入Dll&#xff0c;添加方法 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Web;using ThoughtWorks.QRC…

【原】基础篇:第一篇,本节主要向大家介绍Ext的最基础的话题

http://www.cnblogs.com/mogen_yin/archive/2009/04/30/1447236.html ExtJS是一个Ajax框架&#xff0c;是一个用javascript写的&#xff0c;用于在客户端创建丰富多彩的web应用程序界面。ExtJS可以用来开发RIA也即富客户端的AJAX应用 ExtJS是一个用javascript写的&#xff0c;主…

linux_base-f10-10_7 linuxulator is not (kld)loaded

# cd linux_base-f10/# make install clean> linux_base-f10-10_7 linuxulator is not (kld)loaded.*** Error code 1 解决办法&#xff1a;kldload linux 再重新执行make install clean命令即可。转载于:https://www.cnblogs.com/seasonsstory/p/3148870.html

margin的缩写

margin:0px;//页面内容距离浏览器边框的距离均为0px&#xff1b; margin:0px 5px;网页内容距离浏览器边框上下0px。左右5px margin&#xff1a;0px 10px 5px&#xff1b;//上0 &#xff0c;下10&#xff0c;左右5px margin:0px 1px 2px 3px;//上 右 下 左 0 1 2 3px; 其他的类…

前后端分离的项目部署到tomcat_如何在开发时部署和运行前后端分离的JavaWeb项目...

在开发中大型的JavaEE项目时&#xff0c;前后端分离的框架逐渐成为业界的主流&#xff0c;传统的单机部署前后端在同一个项目中的工程项目越来越少。这类JavaWeb项目的后端通常都采用微服务的架构&#xff0c;后端会被分解为诸多个小项目&#xff0c;然后使用dubbozookeeper或者…

51单片机实现三位十进制数加减乘除运算

51单片机实现三位十进制数加减乘除运算 一.题目 51单片机IO接口作业 请将附件给出的Proteus图用51单片机完成一个计算器功能。 1、显示采用动态分时8位共阳数码管输出。 2、采用4*4矩阵键盘输入&#xff0c;键盘上已经标识对应键。 3、完成三位十进制数的加、减、乘、除运…

未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version=11.0.0.0, ...”或它的某一个依赖项~[解决方案]...

配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。 分析器错误信息: 未能加载文件或程序集“Microsoft.Office.Interop.Owc11, Version11.0.0.0, Cultureneutral, PublicKeyToken71e9bce111e9429c”或它的某一个…

方法javaJVM学习笔记-内存处理

本文是一篇关于方法java的帖子 大多数JVM将内存区域分离为Method Area&#xff08;Non-Heap&#xff09;&#xff0c;Heap&#xff0c;Program Counter Register&#xff0c;Java Method Statck&#xff0c;Native Method Stack和Direct Memomry&#xff08;备注&#xff1a;Di…