用了四天的闲余时间,终于写完了线性表的顺序和链式两种结构的代码,进度有些慢,因为的确遇到了一些问题,也学到了一些知识,上传代码,同时代码同步更新到我创建的项目里,欢迎指出代码或者算法等等的不足和修改意见!

项目链接:https://code.csdn.net/a894554149/link_based_on_c/tree/master

/*顺序存储结构的线性表操作函数*/
#include<stdio.h>
#include<stdbool.h>
#define MAXSIZE 100
#define OK 0
#define ERROR 1typedef int Status;
typedef int ElemType;typedef struct{ElemType data[MAXSIZE];int Length;
} SqList;Status InitList(SqList *L) //初始化一个sq线性表
{L->Length = 0;return OK;
}Status ListInsert(SqList *L,int i,ElemType e)//在线性表L中第i个位置插入新元素e
{int j;if( i<1 || i>L->Length+1 ){return ERROR;}if(L->Length+1 > MAXSIZE){return ERROR;}for( j=L->Length; j>i-1 ;j-- ){L->data[j] = L->data[j-1];}L->data[i-1] = e;L->Length++;return OK;
}bool ListEmpty(SqList L) //判断线性表是否为空表
{return !(bool)L.Length;
}void printList(SqList L)//打印顺序线性表
{int i;if(L.Length == 0){printf("List is Empty!");}printf("\n");for( i=0; i<L.Length; i++ ){printf("%d ",L.data[i]);}printf("\n");printf("\n");
}Status ClearList(SqList *L) //清空线性表
{/*int i;for( i=0; i<L->Length; i++){L->data[i] = 0} */ //其实这个for循环可以不用写L->Length = 0; return OK;
}Status GetElem(SqList L, int i, ElemType *e) //取线性表L中第i个元素赋值给e
{if( i<1 || i>L.Length ){return ERROR;}*e = L.data[i-1];return OK;
}Status LocateElem(SqList L, ElemType e) //在线性表L中定位元素e
{int i;if(L.Length == 0){return 0;}for( i=0; i < L.Length; i++){if(L.data[i] == e){return i+1;}}return 0;
}Status ListLength(SqList L)
{return L.Length;
}Status ListDelete(SqList *L, int i, ElemType *e)
{int j;if( i<1 || i>L->Length ) //这里不用判断是否为空表{                      //因为是空表的话,L->Length为0return ERROR;        //小于1或大于0包含了全体实数,所以是空表必然返回ERROR}*e = L->data[i-1]; for( j=i-1; j < L->Length-1; j++ ){L->data[j] = L->data[j+1];}L->Length--;return OK;
}
/*顺序存储结构的主函数*/
#include</home/linux/ds&a/list/sequence/Sequence.c> //这里需要填写sequence.c文件的绝对路径
#define MAXLIST 10void main()
{SqList s[MAXLIST];//注意,不同链表的数据类型不一样int m = 0; //创建的线性表数目int n = 0; //选定的线性表int d = 0; //选定的操作int i = 0; //线性表中的位置int e = 0; //线性表中的数据while(1){printf("1:创建线性表\n");printf("2:操作线性表\n");printf("0:退出系统!\n\n");printf("请输入操作代码:");while( scanf("%d",&d)== 0 ){getchar();printf("输入格式错误,请重新输入:");          }getchar();if ( 0 == d ) //0:退出系统{break;}else if ( 1 == d ) //1:创建线性表{if( m >= MAXLIST ){printf("\t\t\t已达到最大可创建的线性表数目,创建失败!\n");continue;}InitList( &s[m] );printf("\t\t\t编号为%d的线性表已被创建!\n",m+1);m++;}else if( 2 == d ) //2:操作线性表{if( m == 0){printf("\t\t\t还没有线性表被创建,请先创建线性表!\n");continue;}printf("\n请输入要操作的线性表代码,返回主菜单,请输入0:");while(scanf("%d",&n) == 0){getchar();printf("输

基于C语言的线性表操作,包含单链表和顺序线性表两种类型相关推荐

  1. ML之RF:基于葡萄牙银行机构营销活动数据集(年龄/职业/婚姻/违约等)利用Pipeline框架(两种类型特征并行处理)+RF模型预测(调参+交叉验证评估+模型推理)客户是否购买该银行的产品二分类案例

    ML之RF:基于葡萄牙银行机构营销活动数据集(年龄/职业/婚姻/违约等)利用Pipeline框架(两种类型特征并行处理)+RF模型预测(调参+交叉验证评估+模型推理)客户是否购买该银行的产品二分类案例 ...

  2. ML:基于葡萄牙银行机构营销活动数据集(年龄/职业等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格/随机搜索+推理)客户是否购买该银行的产品二分类案

    ML之pipeline:基于葡萄牙银行机构营销活动数据集(年龄/职业/婚姻/违约等)利用Pipeline框架(两种类型特征并行处理)+多种模型预测(分层抽样+调参交叉验证评估+网格搜索/随机搜索+模型 ...

  3. 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...

    的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...

  4. C语言线性表之循环单链表

    #include<stdio.h> #include<stdlib.h>int typeOfLinkList;typedef struct LNode{int data;str ...

  5. C语言将结点s赋给表L,数据结构-单链表

    一.单链表基本定义 线性表的链式存储:线性表采用链式方式将结点链接起来的存储结构称之链表.单链表结构,分前后两个域,date数据域:存放结点的值,next指针域:存放数据元素后继的位置.附设头结点的目 ...

  6. 线性表的应用 —— 单链表

    线性表的应用 -- 单链表 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不一定相邻,可以给每个元素都附加一个指针域,指向下一个元素的存储位置. 像这样: 从图中可以看出,每个节点都 ...

  7. 链表归并成递减c语言,将递增有序单链表A和B归并成表C 递减单链表的尾插法建立和输出...

    自己辛苦成果,拿出来帮助那些数据结构没学好和C语言基础差的人 #include #include typedef struct Node { int data; struct Node *next; ...

  8. R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间

    R语言生存分析寿命表(life table)实战案例:比较两种药物治疗感染患者的生存时间 目录

  9. 设计一个处理两种类型地址的地址簿程序_编译器设计-符号表-中间代码生成

    编译器设计-符号表-中间代码生成 Compiler Design - Symbol Table Compiler - Intermediate Code Generation 一.Compiler D ...

  10. Spring 让 LOB 数据操作变得简单易行,LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型

    http://www.ibm.com/developerworks/cn/java/j-lo-spring-lob/index.html 本文讲解了在 Spring 中处理 LOB 数据的原理和方法, ...

最新文章

  1. Linux负载均衡实现
  2. 【干货】常用的Linux 系统备份、恢复命令
  3. Misc(网络+组成原理)
  4. Python中字符串操作函数string.split('str1')和string.join(ls)
  5. Shell入门(五)之参数
  6. mysql取消mvvc机制_MySQL探秘(六):InnoDB一致性非锁定读
  7. 全国计算机二级C 错题/知识点整理
  8. Struts2体系介绍
  9. 黑客帝国里的代码雨-java代码实现
  10. HTTP 405Method not allowed
  11. bitbake的原理介绍, 使用方法, 编译脚本的编写方法
  12. 计算机视觉之目标检测(object detection)《1》
  13. 携创教育:2022学历改革解读系列|提升学历、迫在眉睫
  14. h5 适配 iphoneX 的全面屏 (上有刘海 ,下有呼吸灯) ,在iphonX 上 fixed定位的问题
  15. JS标准内置对象 数组 的 34 个方法
  16. 计算机程序必须具有硬盘才能工作吗,2016年3月计算机一级考试WPS试题及答案
  17. 作为技术团队TL,如何运用OKR提高团队产出
  18. latex 编译新的tex时,缺少sty文件时的安装方法
  19. Python 套接字编程
  20. MongoDB 模糊查询包含/不包含字符串

热门文章

  1. Mac使用技巧:如何更好地使用Spotlight!
  2. 关于指针和引用的一些感想,为什么指针用好了是大杀器。时四两拨千斤。
  3. 机器人时代已来?银行客服机器人受热捧
  4. 基本概念:子域名和域
  5. CSS—弹性盒子布局(一看就懂)
  6. 【教学类-34-05】20230523拼图(数字学号0X-长方块拼图-双色深灰浅灰)3*3格子(中班主题《个别化拼图》偏艺术-美术)
  7. 宝洁PG使用EDI实现供应链整合详解
  8. 为什么要用impl继承service层_service和serviceImpl的选择
  9. 华企盾DSC发送白名单提示“解密发送失败”(被中转服务器判定为垃圾邮箱)
  10. [C/C++]C语言中对文件的操作方法