主函数代码(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;}

数据结构-顺序表(C语言实现)相关推荐

  1. 图书信息管理系统(数据结构顺序表,c语言版)

    图书信息管理系统 顺序表 一.实验题目 二.工具环境 三.实验问题 问题: 四.实验代码 五.解决方法 方法: 一.实验题目 图书信息管理系统 出版社有一些图书数据,为简单起见,在此假设每种图书只包括 ...

  2. 数据结构-顺序表-c++语言-模板类实现代码(附详细解释) _清风明月

    #include<iostream> #include<new> #define MAXSIZE 1000 #define REALLOC 10 using namespace ...

  3. C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...

    c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...

  4. C语言/C++常见习题问答集锦[八十三]之数据结构顺序表(operand types are error: no match for “operator==“)

    C语言/C++常见习题问答集锦[八十三]之数据结构顺序表{operand types are error: no match for "operator=="} 程序之美 前言 主 ...

  5. 数据结构摧毁线性表用c语言,[简述]数据结构-线性表(c语言实现)

    [简述]数据结构-线性表(c语言实现)second60 20180422 1. 线性表的定义 线性表是具有相同特性的数据元素的一个有限序列. 2. 线性表抽象数据类型描述 ADT  List { 数据 ...

  6. c语言线性顺序表,C语言程序——线性顺序表.doc

    C语言程序--线性顺序表.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  7. 数据结构-顺序表(动态分配存储空间)

    数据结构-顺序表(动态分配存储空间) (1)顺序表的结构定义: 结构型定义:(动态分配存储空间) /*** 动态分配存储空间*/ #define InitSize 100 //动态分配存储空间时,不限 ...

  8. 数据结构--顺序表的使用

    数据结构--顺序表的使 #include<iostream> #include<cstdio> #include<cstring> using namespace ...

  9. Educoder头歌数据结构顺序表及其应用

    头歌实践平台答案educoder 数据结构-顺序表及其应用 第1关:顺序表的实现之查找功能 /***************************************************** ...

  10. 数据结构——顺序表的合并

    数据结构--顺序表的合并 具体要求:写一个函数,其函数的功能是将非递增顺序表LA和LB合并到非递增顺序表LC中 数据结构-顺序表的操作之合并顺序表 一.顺序表的结构 首先要定义的是顺序表的结构体,只有 ...

最新文章

  1. 录音文件下载_音频转文字怎么转?大家都说好用的手机APP:录音转文字助手
  2. 创业,你准备好了吗?
  3. NineImageForCircleFriends朋友圈九宫格
  4. Rainbond v5.1.2发布,微服务架构应用便捷管理和交付
  5. Haroopad安装与配置: Linux系统下最好用的Markdown编辑器
  6. nrf51822-广播模式
  7. 电脑公司 Ghost XP SP3 国庆特别版 v2011.10
  8. dubbo原理_dubbo的底层原理
  9. python-ImageDraw
  10. android 设置特殊字体,Android引入外部自定义特殊字体的方法
  11. 《云计算核心技术剖析》迷你书连载一 – 首席的推荐和前言
  12. 群晖服务器怎么做文件转移,群晖(黑) 篇五:群晖系统迁移:旧群晖数据和系统转移到新机器...
  13. 环境影响评价知识点整理
  14. 二叉树:前序与后序、前序与中序以及中序与后序相同、相反的特征
  15. erlang ets源码实现浅析
  16. 百度地图API获取行政区域边界(省、市、区县)
  17. SXT分布式缓存技术公开课的观后感
  18. 天蓝色房间(密室逃脱三)攻略
  19. 网络流24题(部分)
  20. NFC-PN532串口驱动编写

热门文章

  1. [vue]data数据属性及ref获取dom
  2. 开发实战细节之——关于整型转换为字符串类型的性能与实现分析
  3. CodeForces369C On Changing Tree
  4. 算法 --- 翻转二叉树
  5. 操作系统 --- 线程与进程的比较
  6. 18 Context与组合的应用场景与使用问题
  7. 浙南联合训练赛20180414
  8. 解决Windows客户端访问vsftpd服务器中文乱码问题
  9. Eclipse 修改文本编码方式
  10. 邮件联系人,如何恕不部分字母就能显示邮件联系人