#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. 攻防世界-MISC:simple_transfer

    这是攻防世界高手进阶区的题目,题目如下: 点击下载附件一,得到一个流量包,用wireshark打开搜索flag无果,无奈跑去查看WP,说是先查看一下协议分级,但是并没有像WP所说的协议的字节百分比占用 ...

  2. 斯坦福NLP课程 | 第1讲 - NLP介绍与词向量初步

    作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...

  3. openstack之Designate组件,入门级安装(快速)

    @ 目录 前言 架构 前提准备 创建 DNS 服务 API 端点 安装和配置组件 验证操作 前言 Designate 是一个开源 DNS 即服务实施,是用于运行云的 OpenStack 服务生态系统的 ...

  4. MongoDB 常用运维实践总结

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 一.MongoDB 集群简介 MongoDB是一个基于分布式文件存储的数据库,其目的在于为WE ...

  5. 批量安装Windows系统

    今天我们利用Windows server 2019自带的Windows部署服务通过网络批量安装Win 10 一.Windows服务 1)WDS WDS(Windows Deployment Servi ...

  6. fxksmdb.exe 是什么进程?

    今天打开电脑应用进程发现fxksmdb.exe.fxksmpl.exe.fxksmW.exe三个进程,经过查看文件路径发现原来是施乐打印机的驱动程序自带的应用,平时都没注意到这个,这下放心了. 我这里 ...

  7. Go语言学习——函数二 defer语句

    函数 package main import "fmt" // 函数:一段代码的封装 func f1(){ fmt.Println("Hello 中国!") } ...

  8. 低代码 —— 初步认识 Appsmith

    初步认识 Appsmith appsmith 是什么 appsmith 是 github 上的一个开源项目,截至此刻(20220512)有 17.7k Star. Appsmith 是一个低代码.开源 ...

  9. 渗透:aircrack-ng

    ircrack- NG是一个完整的工具来评估Wi-Fi网络安全套件,功能包括: 监控:数据包捕获和导出数据到文本文件,以供第三方工具进一步处理. 攻击:通过数据包注入回放攻击,去认证,伪造接入点等. ...

  10. Python模块Ⅱ

    Python模块2 part3 模块的分类: 内置模块200种左右:python自带的模块,time os sys hashlib等 第三方模块6000种左右:需要pip install beauti ...