头文件:

#ifndef _SEQLIST_H

#define _SEQLIST_H

#include

#define INIT_SIZE 8

typedef struct SeqList

{

int *base;

size_t size;

size_t capacity;

}SeqList;

// 要实现的函数

void InitList(SeqList *list);

int isfull(SeqList *list);

int isempty(SeqList *list);

void show_list(SeqList *list);

void tail_insert(SeqList *list,int x);

void head_insert(SeqList *list,int x);

void sort(SeqList *list);

void head_delete(SeqList *list);

void tail_delete(SeqList *list);

void pos_insert(SeqList *list,int x,int pos);

void val_insert(SeqList *list, int x);

void pos_delete(SeqList *list,int pos);

int find(SeqList *list,int x);

void val_delete(SeqList *list,int x);

int length(SeqList *list);

void reverse(SeqList *list);

void clear(SeqList *list);

void destroy(SeqList *list);

void quit_system(SeqList *list,int* x);

#endif

fun:

#include "SeqList.h"

// 定义两个返回值接收判断函数的结果

int fret = isfull;

int eret = isempty;

// 初始化顺序表

void InitList(SeqList *list)

{

list->size = 0;

list->capacity = INIT_SIZE;

list->base = (int*)malloc(sizeof(int)*list->capacity);

}

// 判断顺序表是否满

int isfull(SeqList *list)

{

if (list->size >= list->capacity)

{

return -1;

}

else

return 0;

}

// 判断顺序表是否空

int isempty(SeqList *list)

{

if (list->size == 0)

{

return -1;

}

else

return 0;

}

// 显示

void show_list(SeqList *list)

{

int i;

if (list->size == 0)

{

printf("the table is empty!\n");

}

for (i = 0; i < list->size; ++i)

{

printf("%d ", list->base[i]);

}

printf("\n");

}

// 尾插

void tail_insert(SeqList *list,int x)

{

if (fret == -1)

{

printf("the table is full,can not insert!\n");

return;

}

list->base[list->size] = x;

list->size++;

}

// 头插

void head_insert(SeqList *list,int x)

{

int i;

if (fret == -1)

{

printf("the table is full,can not insert!\n");

return;

}

for (i = list->size; i > 0; --i)

{

list->base[i] = list->base[i - 1];

}

list->base[0] = x;

list->size++;

}

// 排序

void sort(SeqList *list)

{

int i;

int j;

int temp;

for (i = 1; i < list->size; ++i)

{

for (j = 0; j < list->size - i; ++j)

{

if (list->base[j]>list->base[j + 1])

{

temp = list->base[j];

list->base[j] = list->base[j + 1];

list->base[j + 1] = temp;

}

}

}

}

// 头删

void head_delete(SeqList *list)

{

int i;

if (eret == -1)

{

printf("the table is empty,can not delete!\n");

return;

}

for (i = 0; i < list->size; ++i)

{

list->base[i] = list->base[i + 1];

}

list->size--;

}

// 尾删

void tail_delete(SeqList *list)

{

if (eret == -1)

{

printf("the table is empty,can not delete!\n");

return;

}

list->size--;

}

// 按位插入

void pos_insert(SeqList *list,int x,int pos)

{

int i;

if (fret == -1)

{

printf("the table is full,can not insert!\n");

return;

}

if (pos<0 || pos>list->size)

{

printf("the position is illegal!\n");

return;

}

else

{

for (i = list->size; i > pos; --i)

{

list->base[i] = list->base[i - 1];

}

list->base[pos] = x;

list->size++;

}

}

// 按值插入

void val_insert(SeqList *list,int x)

{

if (fret == -1)

{

printf("the table is full,can not insert!\n");

return;

}

tail_insert(list,x);

sort(list);

}

// 按位删除

void pos_delete(SeqList *list,int pos)

{

int i;

if (eret == -1)

{

printf("the table is empty,can not delete!\n");

return;

}

if (pos<0 || pos>list->size)

{

printf("the position is illegal!\n");

return;

}

else

{

for (i = pos; i < list->size; ++i)

{

list->base[i] = list->base[i + 1];

}

list->size--;

}

}

// 查找

int find(SeqList *list,int x)

{

int i;

for (i = 0; i < list->size; ++i)

{

if (list->base[i] == x)

{

return i;

}

}

printf("the number is not exit!\n");

return 0;

}

// 按值删除

void val_delete(SeqList *list,int x)

{

int ret = find(list, x);

int i;

if (eret == -1)

{

printf("the table is empty,can not delete!\n");

return;

}

if (ret == -1)

{

printf("the number is not exist!\n");

return;

}

else

{

for (i = ret; i size; ++i)

{

list->base[i] = list->base[i + 1];

}

list->size--;

}

}

// 求长度

int length(SeqList *list)

{

return list->size;

}

// 反转

void reverse(SeqList *list)

{

int temp;

int i = 0;

int j = list->size - 1;

if (eret == -1)

{

printf("the table is empty,can not operate!\n");

return;

}

while (i < j)

{

temp = list->base[i];

list->base[i] = list->base[j];

list->base[j] = temp;

++i;

--j;

}

}

// 清空

void clear(SeqList *list)

{

list->size = 0;

}

// 摧毁

void destroy(SeqList *list)

{

list->base = NULL;

}

// 退出系统

void quit_system(SeqList *list,int *x)

{

*x = 0;

}

主函数:

// c实现顺序表

#include "SeqList.h"

int main()

{

SeqList mylist;

InitList(&mylist);

int input = 1;

int insert = 0;

int pos = 0;

while (input)

{

printf("*********************************************************************\n");

printf("* [1] show_list [2] tail_insert *\n");

printf("* [3] head_insert [4] sort *\n");

printf("* [5] head_delete [6] tail_delete *\n");

printf("* [7] pos_insert [8] val_insert *\n");

printf("* [9] pos_delete [10] find *\n");

printf("* [11] val_delete [12] length *\n");

printf("* [13] reverse [14] clear *\n");

printf("* [15] destroy [16] quit_system *\n");

printf("*********************************************************************\n");

printf("please enter your choose:");

scanf_s("%d", &input);

switch (input)

{

case 1:

show_list(&mylist);

break;

case 2:

printf("please enter the number want to insert:\n");

while (scanf_s("%d", &insert),insert != -1)

{

tail_insert(&mylist, insert);

}

break;

case 3:

printf("please enter the number want to insert:\n");

while (scanf_s("%d", &insert), insert != -1)

{

head_insert(&mylist, insert);

}

break;

case 4:

sort(&mylist);

break;

case 5:

head_delete(&mylist);

break;

case 6:

tail_delete(&mylist);

break;

case 7:

printf("please enter the number want to insert:\n");

scanf_s("%d", &insert);

printf("please enter the position :\n");

scanf_s("%d", &pos);

pos_insert(&mylist, insert, pos);

break;

case 8:

printf("please enter the number want to insert:\n");

scanf_s("%d", &insert);

val_insert(&mylist, insert);

break;

case 9:

printf("please enter the position :\n");

scanf_s("%d", &pos);

pos_delete(&mylist, pos);

break;

case 10:

printf("please enter the number want to find:\n");

scanf_s("%d", &insert);

printf("at the %d\n", find(&mylist, insert));

break;

case 11:

printf("please enter the number want to delete:\n");

scanf_s("%d", &insert);

val_delete(&mylist, insert);

break;

case 12:

printf("the table's length is %d\n", length(&mylist));

break;

case 13:

reverse(&mylist);

break;

case 14:

clear(&mylist);

break;

case 15:

destroy(&mylist);

break;

case 16:

quit_system(&mylist, &input);

break;

default:

break;

}

}

return 0;

}

显示:

尾插:

头插:

排序:

头删:

尾删:

定位插入:

按值插入:

按位删除:

查找:

按值删除:

求长度:

反转:

清除:

退出系统:

C语言获取mysql表数据结构_【数据结构】实现顺序表(c语言)相关推荐

  1. 数据结构之python实现顺序表

    数据结构之python实现顺序表 顺序表是指采用顺序存储的方式来存储数据元素的线性表. 初始化以及创建顺序表 class SequenceList(object):def __init__(self) ...

  2. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  3. 数据结构学习笔记:顺序表的删除操作及其演化题目总结

    目录 前言 例题 类似题目1 类似题目2 类似题目3 类似题目4 类似题目5 结语 前言 文章代码皆在Dev-C++ 5.11中测试,主要是总结一些方法,从而总结一些规律使自己进一步地深化学习内容,仅 ...

  4. java数据结构与算法之顺序表与链表深入分析

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...

  5. 【数据结构】手撕顺序表

    文章目录 一.什么是线性表 二.顺序表 三.手撕顺序表 属性定义 构造方法 接口实现 确保顺序表空间 增加元素 打印顺序表 判断顺序表中是否包含某个元素 查找元素 获取 pos 位置的元素 将 pos ...

  6. 数据结构与算法:顺序表和链表的常用操作 (很全,基本涵盖本章所有算法)

    文章目录 前言: 一.顺序表 二.链表 前言: 数据结构中的表操作算是里面较为简单的章节,但也比较重要,3月份学完的此章节,左思右想今天还是写篇 关于顺序表和链表的博客. ps : 复制代码可以在编译 ...

  7. Python数据结构与算法(四)--顺序表

    顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等.一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 根 ...

  8. (王道408考研数据结构)第二章线性表-第二节2:顺序表的操作

    文章目录 一:顺序表初始化和销毁 二:顺序表的打印 三:顺序表插入 四:顺序表的删除 五:顺序表查找 (1)使用顺序查找法查找 (2)使用二分查找法完成 顺序表使用动态数组方式实现,结点定义如下 ty ...

  9. php算法结构,PHP数据结构与算法:顺序表

    一.概念 把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里,元素间的顺序关系由它们的存储顺序自然表示. 逻辑顺序与物理顺序一致 元素之间的关系以元素在计算机内的"物理位置相邻&qu ...

  10. 数据结构“入门”—手撕顺序表

    目录 一:顺序表基本概念 二:顺序表的实现 1 创建顺序表 2 初始化顺序表 3 检查是否需要扩容 4 打印顺序表 5 销毁顺序表 三:顺序表重要功能-"增 删 查 改" 1:增加 ...

最新文章

  1. LeetCode简单题之到目标元素的最小距离
  2. 我的世界正版moba服务器,《我的世界》需要氪金?反观《迷你世界》才知道差距!...
  3. php读取js验证码,js实现获取短信验证码实例
  4. 【报错笔记】Eclipse导入Maven项目时pom.xml报错,项目上有红感叹号。
  5. [mybatis]映射文件_select_resultMap_discriminator鉴别器
  6. pycharm导入本地文件,程序运行正常,但导入模块时出现红色波浪线
  7. 【pytest】命令行选项
  8. c++ 调用windows tts_有关调用约定的历史 – 第三部分
  9. npn三种波形失真_RF测试笔记:三阶交调失真概述及测试
  10. 五笔字根表识别码图_五笔输入法口诀(五笔字根表快速记忆图)
  11. 如何用Directshow采集摄像头图像
  12. 系统性能测试实施流程
  13. 基于CC2430的基础实验5---时钟模式
  14. 【阿里巴巴Java编程规范学习 三】Java异常日志规约
  15. 测试统计学卡方,t检验,Kappa和Kendall评价
  16. 2022-06微软漏洞通告
  17. 微信小程序自定义picker
  18. 刚安装完成的Jmeter5打开之后没有工作台
  19. 手淘流量是什么意思?手淘搜索流量怎么增加?
  20. hadoop集群的集中管理

热门文章

  1. Python技术之Number数据类型介绍
  2. python常用模块(二)
  3. python根据时间和类型查找文件并将该文件复制到新的文件夹下
  4. opencv进阶学习笔记12:轮廓发现和对象测量
  5. VTK:命名颜色用法实战
  6. JavaScript实现计算π值算法(附完整源码)
  7. OpenCASCADE:使用扩展数据交换 XDE之剪裁平面
  8. wxWidgets:wxAnimationCtrl类用法
  9. boost::spirit模块演示了 AST 的生成,然后将其转储为人类可读的格式
  10. boost::edge_list用法的测试程序