1. void InitList(SqList &L)//建立空顺序表函数
  2. voidListInsert(SqList &L, int i, ElemType e) //在顺序表中第i个位置插入元素函数e

  3. void ListDelete(SqList &L, int i, ElemType &e)//删除顺序表L的第i个数据元素,并用e返回其值。

  4. void PrintList(SqList L)     // 输出顺序表函数

  5. int Locate(SqList L, ElemType e)  //若顺序表L中存在数据元素e,则返回e在顺序表L中第一次出现的位序;否则返回0.

  6. int ListLength(SqList L)    //求顺序表L的表长

 
// 1.编程实现顺序表的基本操作
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define LIST_INIT_SIZE 10 // 存储空间的初始分配量
#define LISTINCREMENT 10 // 分配增量
typedef int ElemType; // 顺序表中存放的是整数
typedef struct{
ElemType *elem; // 存储空间基址
int length; // 当前长度
int listsize; // 当前分配的存储容量
}SqList;
void InitList(SqList &L){
// 建立一个空的顺序表L
L.elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(L.elem){
L.length = 0;
L.listsize = LIST_INIT_SIZE;
}
}
void CreateSqList(SqList &L,int m){
// 初始条件:顺序表L已存在
// 操作结果:将m个元素依次加入顺序表L
int i;
for(i = 0;i < m;i++){
scanf("%d",&L.elem[i]);
L.length++;
if(L.length >= L.listsize){
L.elem = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
L.listsize += LISTINCREMENT;
}
}
}
void ListInsert(SqList &L, int i, ElemType e){
// 初始条件:顺序表L已存在,1<=i<=ListLength(L)+1
// 操作结果:在顺序表L中第i个位置之前插入新的数据元素e,表长加1
ElemType *p,*q;
if(i<1||i>L.length+1)
exit(-2);
if(L.length >= L.listsize){
L.elem = (ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
L.listsize += LISTINCREMENT;
}
q = &(L.elem[i-1]);
for(p = &(L.elem[L.length-1]);p >= q;--p)
*(p+1) = *p;
*q = e;
++L.length;
}
void ListDelete(SqList &L, int i, ElemType &e){
// 初始条件:顺序表L已存在,1<=i<=ListLength(L)
// 操作结果:删除顺序表L的第i个数据元素,并用e返回其值
ElemType *p;
if(i<1||i>L.length)
exit(-2);
e = L.elem[i-1];
for(p = &L.elem[i-1];p <= &L.elem[L.length-1];p++)
*(p-1) = *p;
--L.length;
}
void PrintList(SqList L){
// 初始条件:顺序表L已存在
// 操作结果:打印顺序表
int i;
for(i = 0;i < L.length;i++)
printf("%d ",L.elem[i]);
}
int Locate(SqList L, ElemType e){
// 初始条件:顺序表L已存在
// 操作结果:若顺序表L中存在数据元素e,则返回e在顺序表L中第一次出现的位序;否则返回0
int i,result = 0;
for(i = 0;i < L.length;i++){
if(L.elem[i] == e){
result = i+1;
break;
}
}
return result;
}
int ListLength(SqList L){
// 初始条件:顺序表L已存在
// 操作结果:返回顺序表L的表长
return L.length;
}
int main(){
SqList L;
int n,i;
ElemType e;
InitList(L);
printf("请输入表长:");
scanf("%d",&n);
printf("请输入元素(空格分隔):");
CreateSqList(L,n);
printf("顺序表为:");
PrintList(L);
printf("\n");
printf("输入插入位置和元素(空格分隔):");
scanf("%d %d",&i,&e);
ListInsert(L,i,e);
printf("顺序表为:");
PrintList(L);
printf("\n");
printf("输入删除位置:");
scanf("%d",&i);
ListDelete(L,i,e);
printf("删除元素为:%d\n",e);
printf("输入待查找元素:");
scanf("%d",&e);
printf("查找结果:%d\n",Locate(L,e));
printf("顺序表表长:%d\n",ListLength(L));
printf("按任意键结束...\n");
char ch = getch();
return 0;
}

编程实现顺序表的基本操作相关推荐

  1. 顺序表的基本操作(C语言)

    1.要求 编程实现顺序表的基本操作,并设计一个菜单调用. ①建立(初始化).遍历.取值.查找.插入.删除 ②判空.求元素个数.前驱.后继.置为空表.销毁 2.分析 我们需要去定义一个结构体(以下代码的 ...

  2. 【头歌】顺序表的基本操作

    第1关:顺序表的插入操作 任务描述 本关任务:编写顺序表的初始化.插入.遍历三个基本操作函数. 相关知识 顺序表的存储结构 顺序表的存储结构可以借助于高级程序设计语言中的数组来表示,一维数组的下标与元 ...

  3. C++:顺序表的基本操作(待完善)

    根据命令提示进行顺序表的基本操作(待完善) #include<iostream> #include<algorithm> using namespace std; #defin ...

  4. PTA 顺序表的基本操作

    原题有50分,这个答案有45分,欢迎指出不足 ;) 6-2 顺序表基本操作 (50 分) 实现顺序表的基本操作,如初始化.插入.删除.输出等. 注意:顺序表中可有重复元素值. 要求:写出三个基本操作函 ...

  5. 顺序表的基本操作(详细、全面)

    顺序表是在计算机内存中以数组的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素.使得线性表中在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素 ...

  6. 线性表之顺序表的基本操作

    线性表的定义 线性表是具有相同数据类型的 n ( n > = 0 ) n(n>= 0) n(n>=0)个数据元素的有限序列,其中 n n n为表长,当 n = 0 n=0 n=0时线 ...

  7. 线性表-顺序表的基本操作

    线性表的定义和特点 线性表:由n(n≥0)个数据特性相同的元素构成的有限序列 线性表中元素的个数n(n≥0)称为线性表的长度 空表:n=0 对于非空的线性表或线性结构,特点为: 存在唯一的一个被称作& ...

  8. 简单认识顺序表的基本操作

    文章目录 顺序表 1. 顺序表的概念 2. 顺序表的基本操作 2.1 顺序表的基本属性 2.2 增加元素操作 2.2.1 头插 2.2.2 尾插 2.2.3 按位置插入元素 2.3 删除元素操作 2. ...

  9. 顺序表的基本操作 SCAU8576、SCAU8577、SCAU8578

    //此项目功能:完成顺序表的基本操作及OJ给出的三道题:8576.8577.8578 #include <stdio.h> #include <malloc.h> #defin ...

最新文章

  1. easyui 页面加载闪现问题 解决方法
  2. Javascript-入门
  3. JMeter 监听器之保存响应到文件
  4. Kafka消息序列化和反序列化(下)
  5. linux中dev目录的作用,Linux 的dev目录详解和Linux系统各个目录的作用
  6. 中移4G模块-ML302-OpenCpu开发-(MQTT连接阿里云-订阅主题)
  7. OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
  8. 武汉理工计算机学院分数线,武汉理工今年计算机分数线
  9. kr中的逆波兰表示法计算器
  10. 不是三维——软件项目的设计、开发与管理
  11. 浅谈一下对runloop的理解
  12. 12个优秀的 HTML5 网站设计案例欣赏
  13. 特斯拉开火,状告5名前员工、小鹏汽车、Zoox身陷漩涡...
  14. linux history命令详解
  15. Heterogeneous Treatment Effect
  16. 常量和常变量(const)
  17. BT源代码学习心得(十三):客户端源代码分析(对等客户的连接建立及其握手协议)
  18. 大数据就业前景如何?大数据时代,马云这样说...
  19. 无迹卡尔曼滤波UKF—目标跟踪中的应用(仿真部分)
  20. 计算机网络基础之计算机网络

热门文章

  1. 乐观锁和悲观锁的简单实现
  2. Ubuntu+Windows双系统,默认从Windows启动
  3. 合理运用计算机技术学校,浅议在学校管理中计算机技术合理应用
  4. illustrator cs5 for mac 官方简体中文版 破解
  5. LibreCAD 2.1.3在windows 10 下的编译过程
  6. 【文本分类】文本分类流程及算法原理
  7. Linux终端Terminal常用快捷键
  8. Keil环境添加STC系列单片机
  9. Linux 系统安全应用
  10. VTS-DEBUG VtsHalCameraProviderV2_4TargetTest CameraHidlTest.noHal1AfterP FAIL