#include <stdio.h>
#include <stdlib.h>
#include "test_顺序表声明.h" /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) {
SeqList L1;
ElemType x1;
int i,num=1,num1,num2,num3,num4,num5;
init_SeqList(&L1);//预先清空顺序表,准备开始存放数据
printf("顺序表已初始化,可以直接操作!\n");
printf("0:表示退出\n");
printf("1:表示录入元素\n");
printf("2:插入元素\n");
printf("3:删除元素\n");
printf("4:查找表中元素\n");
printf("5:取某个元素\n");
printf("6:判断顺序表是否为空\n");
printf("7:求顺序表的长度\n");
printf("8:清空顺序表\n");
while(num!=0)
{
printf("\n请输入指令:");
scanf("%d",&num);
switch(num)
{
case 0:exit(0);
break;
case 1:printf("请输入你要输入元素的个数:\n");
scanf("%d",&L1.length);
printf("请开始输入%d个元素\n",L1.length);
for(i=1;i<=L1.length;i++)
{
scanf("%d",&L1.elem[i]);
}
break;
case 2:printf("请输入要插入的元素:\n");
scanf("%d",&num1);
printf("请输入你要插入几号位置:\n");
scanf("%d",&num2);
num1=Inser_SeqList(&L1,num2,num1);
if(num1==1)
printf("插入成功!\n");
else
printf("插入失败!\n");
printList(L1);
break;
case 3:printf("请输入删除元素的位置:\n");
scanf("%d",&num3);
num3=Delete_SeqList(&L1,num3);
if(num3==1)
printf("删除成功!\n");
else
printf("删除失败!\n");
printList(L1);
break;
case 4:printf("请输入你要查找的元素:\n");
scanf("%d",&x1);
num=Location_SeqList(L1,x1);
if(num==-1)
printf("此位置没有元素!\n");
else
printf("此元素位置在:%d\n",num);
break;
case 5:printf("请输入要取元素的位置:\n");
scanf("%d",&num5);
num=Location_SeqList1(L1,num5);
if(num==-1)
printf("此位置没有元素!\n");
else
printf("第%d号位置为:%d",num5,num);
break;
case 6:num=ListEmpty(&L1);
printf("数据表ture表示空,false表示非空\n");
if(num==-1)
{
printf("判断结果为:%c%c%c%c\n",116,117,114,101);
}
else if(num==1)
{
printf("判断结果为:%c%c%c%c%c\n",102,97,108,115,101);
}
else{
printf("程序错误!");
}
break;
case 7:num=LongList(&L1);
if(num==-1)
printf("长度为:0");
else
printf("长度为:%d",num);
break;
case 8:ClearList(&L1);
printf("顺序表已清空!\n");
break;
default:printf("指令错误!请重输!\n");
break;
}
printList(L1); }
return 0;
}

项目的main函数,也是顺序表项目的启动器

#include <stdio.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int length;
}SeqList;//定义一个顺序表
//初始化顺序表
void init_SeqList(SeqList *L)
{
L->length=0;//长度为0,顺序表自然为空
}
//插入函数
int Inser_SeqList(SeqList *L,int i,ElemType x)
{
int j;
if(L->length==MAXSIZE-1)//表满
{
printf("表满!");
return -1;
}
if(i<1||i>L->length+1)//0号位置不放数据,这句话的意思
{
printf("位置不对\n");
return -1;
}
//排除了所有不能插入的情况后,可以直接开始插入
for(j=L->length;j>=i;j--)
L->elem[j+1]=L->elem[j];//逐个移动位置,直到把待插入的位置空出来
L->elem[i]=x; //待插入的位置空余后,把待插入的数据赋值给那个位置
L->length++;
return 1;
//1表示成功,-1表示不成功
}
//删除函数 待删除的数据表,待删除的位置
int Delete_SeqList(SeqList *L,int i)
{
int j;
if(i<1||i>L->length)
{
printf("不存在%d位置,这个元素\n",i);
return -1;
}
for(j=i;j<=L->length-1;j++)
{
L->elem[j]=L->elem[j+1];//直接向删除位置进行数据移动,把删除位置的数据覆盖掉,完成删除(顺序表)
}
L->length--;//长度收缩,完全丢掉
return 1;
}
//查找函数
int Location_SeqList(SeqList L,ElemType x)
{
int i=1;
//第一个条件跳出,表长不够,或者说查找数据不在此内
//第二个条件跳出,数据被找到了
while(i<L.length&&L.elem[i]!=x)
i++;
if(i>L.length)
return -1;
else
return i;
}
int Location_SeqList1(SeqList L,int i)
{ //第一个条件跳出,表长不够,或者说查找数据不在此内
//第二个条件跳出,数据被找到了
if(i<L.length&&i>0)//判断位置的合法性
return L.elem[i];
else
return -1;
}
//判断线性表是否为空
int ListEmpty(SeqList *L)
{
if(L->length!=0)
return 1;
else
return -1;
} //输出表的长度
int LongList(SeqList *L)
{
if(L->length!=0)
return L->length;
else
return -1;
}
//清空表
int ClearList(SeqList *L)
{
L->length=0;//长度为0,顺序表自然为空
return 1;
}
void printList(SeqList L)
{
int i;
for(i=1;i<=L.length;i++)
{
printf("%-3d",L.elem[i]);
}
}

顺序表所用到的函数,都写在了"test.函数"之中

//项目函数声明
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int length;
}SeqList;//定义一个顺序表
SeqList *L;
void init_SeqList(SeqList *L);
int Inser_SeqList(SeqList *L,int i,ElemType x);
int Delete_SeqList(SeqList *L,int i);
int Location_SeqList(SeqList L,ElemType x);
int Location_SeqList1(SeqList L,int i);
int ListEmpty(SeqList *L);
int LongList(SeqList *L);
int ClearList(SeqList *L);
void printList(SeqList L);

项目的函数声明,项目也必须要这个声明,一般不声明编译器会自己改动函数的返回值为int,但是我们的输入值可能为:float,double,char等等

此项目都是用的int,可能不用声明结果不会错,但是现实中大部分情况都是有问题的。

C语言项目实现顺序表的更多相关文章

  1. 数据结构C语言版--动态顺序表的基本功能实现(二)

    /* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...

  2. C语言实现的顺序表

    顺序表是用一段地址连续的存储单元依次存储数据元素的线性结构.顺序表可分为静态存储和动态存储,静态顺序表比较简单,数据空间固定,而动态顺序表可以动态增容,便于存放大量数据,现主要把动态的基本实现一下~此 ...

  3. C语言学习笔记-顺序表

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include "coni ...

  4. C语言版本:顺序表的实现

    seqlist.h #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include<cstdio> #include<malloc.h> ...

  5. c语言描述的顺序表实现

    //顺序表的实现:(分配一段连续地址给顺序表,像数组一样去操作) #include<stdio.h> #include<stdlib.h> #define OK 1 #defi ...

  6. 数据结构C语言版--静态顺序表的基本功能实现(一)

    /* * 功能:创建一个线性表,并输出 * 静态分配内存 */ #include<stdio.h> //stdio.h是C的标准I/O库 //#include<iostream> ...

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

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

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

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

  9. C语言顺序表的实现

    今天本来想写段代码练练手,想法挺好结果,栽了个大跟头,在这个错误上徘徊了4个小时才解决,现在分享出来,给大家提个醒,先贴上代码: /********************************** ...

随机推荐

  1. 【论文阅读】ConvNeXt:A ConvNet for the 2020s 新时代卷积网络

    一.ConvNext Highlight 核心宗旨:基于ResNet-50的结构,参考Swin-Transformer的思想进行现代化改造,知道卷机模型超过trans-based方法的SOTA效果. ...

  2. python学习-Day24

    目录 今日内容详细 主菜 : ATM+购物车作业 项目开发流程 需求分析 架构设计 分组开发 项目测试 交付上线 需求分析 提炼项目功能 项目大致技术栈 架构设计 编程历经过程 三层架构 将ATM分为 ...

  3. XCTF练习题---WEB---Cookie

    XCTF练习题---WEB---Cookie flag:cyberpeace{dc6a6799546a3e0fbfeacb8650b55ff0} 解题步骤: 1.观察题目,打开场景 2.观察场景内容, ...

  4. ServletContext类 (共享数据+获取初始化的参数+请求转发+读取资源文件)

    ServletContext对象 web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的 web应用: 作用 1.共享数据  (一般用sessio ...

  5. 【ACM程序设计】差分

    差分 假设有一个数列,我们需要对数列中的一个区间加上或减去一个值,直接想到的便是对该区间进行一次循环逐项加减. 但是当请求的操作变得非常多的时候,每次请求都进行一次循环会很容易爆时间,因此我们引入了差 ...

  6. Linux 实现静态路由实验

    环境: 四台主机: A主机:eth0 NAT模式 R1主机:eth0 NAT模式,eth1 仅主机模式 R2主机:eth0 桥接模式,eth1仅主机模式 B主机:eth0 桥接模式 手动修改IP地址 ...

  7. 团队Arpha4

    队名:观光队 组长博客 作业博客 组员实践情况 王耀鑫 **过去两天完成了哪些任务 ** 文字/口头描述 完成服务器连接数据库部分代码 展示GitHub当日代码/文档签入记录 接下来的计划 服务器网络 ...

  8. 如何查看Linux进程详情?(ps命令)

    点击关注上方"开源Linux", 后台回复"读书",有我为您特别筛选书籍资料~ 1. ps是什么? 要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是 ...

  9. MongoDB排序时内存大小限制和创建索引的注意事项!

    线上服务的MongoDB中有一个很大的表,我查询时使用了sort()根据某个字段进行排序,结果报了下面这个错误: [Error] Executor error during find command ...

  10. CentOS7安装部署Mongodb

    1.下载安装包 打开官网,跳转至下载界面,选择对应版本的安装包,拷贝其链接,这里是手动安装,所以下载tgz安装包,如果要自动化安装,选择server的rpm自动安装包 https://www.mong ...