题目:参照程序2.1~2.7,编写代码,完成顺序表的初始化、查找、插入、删除、输出、撤销等操作。

部分代码:

顺序表的结构体定义:

typedef struct {int n;               //顺序表的长度int maxLength;       //顺序表的最大长度ElemType *element;   //存放动态分配一维数组首地址
}SeqList;

插入函数代码:

//初始化插入
Status Insert(SeqList *L, int i, ElemType x) {int j;if (i<-1 || i>L->n - 1)                  //判断下标i是否越界return ERROR;if (L->n == L->maxLength)                //判断顺序表存储空间是否已满return ERROR;for (j = L->n - 1; j > i; j--) {L->element[j + 1] = L->element[j];   //从后往前逐个后移元素}L->element[i + 1] = x;                   //将新元素放入下标为i+1的位置L -> n = L->n + 1;                       //长度+1return OK;
}

删除函数代码:

//顺序表的删除
Status Delete(SeqList *L, int i){int j;if(i<0||i>L->n-1){                   //下标i是否越界return ERROR;}if(!L->n){                           //顺序表是否为空return ERROR;}for(j=i+1;j<L->n;j++){L->element[j-1]=L->element[j];   //从前往后逐个前移元素}L->n--;                              //表长减1return OK;
}

完整代码:

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef int Status;typedef struct {int n;               //顺序表的长度int maxLength;       //顺序表的最大长度ElemType *element;   //存放动态分配一维数组首地址
}SeqList;//顺序表初始化
Status Init(SeqList *L, int mSize) {L->maxLength = mSize;L->n = 0;L->element = (ElemType*)malloc(sizeof(ElemType)*mSize);if(!L->element)return OK;
}//顺序表的查找
Status Find(SeqList L,int i,ElemType *x){if(i<0||i>L.n-1){return ERROR;    //判断元素下标i是否越界}*x=L.element[i];     //取出element[i]的值通过参数x返回return OK;
}//初始化插入
Status Insert(SeqList *L, int i, ElemType x) {int j;if (i<-1 || i>L->n - 1)                      //判断下标i是否越界return ERROR;if (L->n == L->maxLength)                    //判断顺序表存储空间是否已满return ERROR;for (j = L->n - 1; j > i; j--) {L->element[j + 1] = L->element[j];   //从后往前逐个后移元素}L->element[i + 1] = x;                       //将新元素放入下标为i+1的位置L -> n = L->n + 1;                           //长度+1return OK;
}//顺序表的删除
Status Delete(SeqList *L, int i){int j;if(i<0||i>L->n-1){                   //下标i是否越界return ERROR;}if(!L->n){                           //顺序表是否为空return ERROR;}for(j=i+1;j<L->n;j++){L->element[j-1]=L->element[j];   //从前往后逐个前移元素}L->n--;                              //表长减1return OK;
}//顺序表输出
int Output(SeqList L) {int i;if (!L.n)return ERROR;                 //判断顺序表是否为空for (i = 0; i <= L.n - 1; i++)printf("%d ", L.element[i]);  //从前往后逐个输出元素return OK;
}//顺序表的撤销
void Destroy(SeqList *L){(*L).n=0;(*L).maxLength=0;free((*L).element);
}void main()
{int i,x;SeqList list;Init(&list, 10);                   //对线性表初始化for (i = 0; i < 9; i++) {Insert(&list, i - 1, i);   //将0-8插入到顺序表中}Output(list);printf("\n");Delete(&list,0);                       //删除0Output(list);Find(list,2,&x);                   //查找下标为2的元素并输出printf("\nthe value is:");printf("%d",x);Destroy(&list);
}

实验结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

南邮数据结构实验1.1:顺序表的相关操作相关推荐

  1. C语言南邮数据结构实验报告2,南邮数据结构实验报告.docx

    南邮数据结构实验报告 实验报告 课程名称 实验名称数据结构二叉树基本操作以及哈夫曼编码译码系统 实验时间 指导单位指导教师年月日 学生姓名 学院(系) 班级学号专业 二叉树的基本运算: 一.问题描述 ...

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

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

  3. 南邮数据结构实验三---图的基本运算及飞机换乘次数最少问题

    一. 实验目的和要求 1.掌握在图的邻接矩阵和邻接表存储结构实现图的基本运算的算法.学习使用图算法解决应用问题的方法. (1). 验证教材中关于在邻接矩阵和邻接表两种不同存储结构上实现图的基本运算的算 ...

  4. c++实现顺序表的相关操作

    Myarray.h文件 #pragma once#include<iostream>using namespace std;class MyArray { public:MyArray() ...

  5. 逆置单链表c语言程序,(数据结构C语言版)顺序表和单链表的逆置

    <(数据结构C语言版)顺序表和单链表的逆置>由会员分享,可在线阅读,更多相关<(数据结构C语言版)顺序表和单链表的逆置(7页珍藏版)>请在人人文库网上搜索. 1.实验1-1顺序 ...

  6. 南邮计算机实验报告合集【非常全】

    南邮计算机实验报告合集 GitHub上自取,可以借鉴,请勿直接抄袭 南京邮电大学数据结构实验,南京邮电大学离散数学实验,南京邮电大学操作系统实验,南京邮电大学电工电子基础实验B实验,南京邮电大学汇编语 ...

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

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

  8. 数据结构实验:哈希表

    数据结构实验:哈希表 题目描述 在n个数中,找出出现次数最多那个数字,并且输出出现的次数.如果有多个结果,输出数字最小的那一个. 输入 单组数据,第一行数字n(1<=n<=100000). ...

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

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

最新文章

  1. Android Parcelable的介绍与使用
  2. tomcat php模块化运行,Windows下 Tomcat 运行 PHP 的配置
  3. 2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?
  4. 配置树莓派3和局域网NTP服务器实现内网时间校准
  5. cpu序列号唯一吗_手机CPU天梯图2020年1月最新版 你的手机处理器排名高吗?
  6. 谷歌chrome模拟手机浏览网页:iPhone/Android
  7. 图像局部特征(十八)--BOW
  8. 炫酷 雨滴桌面设置工具
  9. 几何图形计算器的设计与实现----课程设计任务书
  10. hive presto sql从身份证号提取年龄和性别
  11. 将机器人的urdf文件转为Mujoco模型
  12. java.lang.IllegalArgumentException: Address 127.0.0.1:5672:5672 seems to contain an unquoted IPv6
  13. Main concerns of fDSST tracker
  14. mc 手游无限挑战服务器,盘点mc中可无限获得的东西(无BUG无mod)[多图]
  15. 30个计算机相关的英语词汇,计算机应用常用英语词汇30
  16. eclipse SVN A conflict in the working copy obstructs the current operation
  17. ssm 远程监控linux,Wisenet SSM视频监控综合管理平台
  18. 2022年PMP考试题型都有什么?
  19. 前端开发小白,如何找一个师傅?
  20. 国家2000坐标系CGCS2000(EPSG4490和EPSG4479)参数

热门文章

  1. 企业如何利用小程序引流?小程序常见的4个引流方法
  2. 前端超出换行-white-space
  3. css的white-space属性:normal,nowrap,pre,pre-line和pre-wrap的区别?
  4. 基于MS的氢键分析脚本介绍
  5. el-element使用本地自定义图标
  6. ip 子网数目 网络号 主机号 广播地址 可用IP地址范围
  7. 求多个数的最小公倍数或最大公约数
  8. elementUI——form表单
  9. 五-2、vue中引用文件路径问题
  10. 【图像识别】基于模板匹配算法求解车牌识别问题matlab代码