1.实验目的
熟悉将算法转换成程序代码的过程,了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的c语言描述方法。熟练掌握顺序表的基本操作:查找、插入、删除、合并等,掌握顺序表的随机存储特性。
2.实验内容
(1)在非递减有序的顺序表中插入一个元素x,保持顺序表的有序性。
(2)顺序表元素的逆置。
(3)两个(有序或无序)顺序表的合并

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW 0
#define OK 1
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量
typedef  int  ElemType;
typedef  int  Status;
typedef struct {ElemType *elem;//存储空间基址int length;//线性表当前长度int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
} SqList;
Status InitList_Sq(SqList *L)
{//构造空的线性表LL->elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));if (!L->elem)exit(OVERFLOW);//存储分配失败L->length = 0;//空表长度为零L->listsize = LIST_INIT_SIZE;//初始存储容量return OK;
}
void Create(SqList *L)//创建
{// SqList L;//InitList_Sq(&L);int n;int i = 0;printf("输入线性表中元素个数(少于100个):\n");while (scanf("%d", &n) && n > 100 || n < 0){printf("数据不合法,请重新输入\n");}printf("请输入%d个数,用空格分开\n", n);while (n--){scanf("%d", &L->elem[i]);i++;L->length++;}
}
Status InsertOrderList(SqList *L, int x)
{ElemType *newbase, *p;if (L->length >= L->listsize){//当前存储空间已满,增加分配newbase = (ElemType*)realloc(L->elem, (L->listsize + LISTINCREMENT) * sizeof(ElemType));if (!newbase)exit(OVERFLOW);//存储分配失败L->elem = newbase;//新基址L->listsize += LISTINCREMENT;//增加存储容量}p = &(L->elem[L->length - 1]);//指向表尾元素的位置while (p >= &(L->elem[0]) && *p > x){*(p + 1) = *p;p--;}*(p + 1) = x;L->length++;return OK;
}
void Show(SqList *L)
{printf("顺序表中的元素是:\t");for (int i = 0; i < L->length; i++){printf("%5d", L->elem[i]);}printf("\n");
}
int main()
{ElemType  x;SqList L;InitList_Sq(&L);Create(&L);printf("输入要插入的元素:\n");scanf("%d", &x);InsertOrderList(&L, x);Show(&L);system("pause");
}

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW 0
#define OK 1
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量
typedef  int  ElemType;
typedef  int  Status;
typedef struct {ElemType *elem;//存储空间基址int length;//线性表当前长度int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
} SqList;
Status InitList_Sq(SqList *L)
{//构造空的线性表LL->elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));if (!L->elem)exit(OVERFLOW);//存储分配失败L->length = 0;//空表长度为零L->listsize = LIST_INIT_SIZE;//初始存储容量return OK;
}
void Create(SqList *L)//创建
{// SqList L;//InitList_Sq(&L);int n;int i = 0;printf("输入线性表中元素个数(少于100个):\n");while (scanf_s("%d", &n) && n > 100 || n < 0){printf("数据不合法,请重新输入\n");}printf("请输入%d个数,用空格分开\n", n);while (n--){scanf_s("%d", &L->elem[i]);i++;L->length++;}
}
void Reverse(SqList *L)
{int temp;for (int i = 0; i < (L->length - 1) / 2; i++){temp = L->elem[i];L->elem[i] = L->elem[L->length - 1 - i];L->elem[L->length - 1 - i] = temp;}
}
void Show(SqList *L)
{printf("顺序表中的元素是:\t");for (int i = 0; i < L->length; i++){printf("%5d", L->elem[i]);}printf("\n");
}
int main()
{SqList L;InitList_Sq(&L);Create(&L);Show(&L);printf("逆置后的顺序表如下所示:\n");Reverse(&L);Show(&L);system("pause");
}

#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define ERROR 0
#define OVERFLOW 0
#define OK 1
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量
typedef  int  ElemType;
typedef  int  Status;
typedef struct {ElemType *elem;//存储空间基址int length;//线性表当前长度int listsize;//当前分配的存储容量(以sizeof(ElemType)为单位)
} SqList;Status InitList_Sq(SqList *L)
{//构造空的线性表LL->elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType));if (!L->elem)exit(OVERFLOW);//存储分配失败L->length = 0;//空表长度为零L->listsize = LIST_INIT_SIZE;//初始存储容量return OK;
}void Create(SqList *L)//创建
{// SqList L;//InitList_Sq(&L);int n;int i = 0;printf("输入线性表中元素个数(少于100个):\n");while (scanf_s("%d", &n) && n > 100 || n < 0){printf("数据不合法,请重新输入\n");}printf("请输入%d个数,用空格分开\n", n);while (n--){scanf_s("%d", &L->elem[i]);i++;L->length++;}
}void Show(SqList *L)
{printf("顺序表中的元素是:\t");for (int i = 0; i < L->length; i++){printf("%5d", L->elem[i]);}printf("\n");
}void MergeList_Sq(SqList *La, SqList*Lb, SqList*Lc)
{//已知顺序线性表La,Lb的元素按值非递减排列//归并La和Lb得到新的顺序线性表Lc,Lc的元素也按值非递减排列ElemType*pa, *pb, *pc,*pa_last,*pb_last;//声明5个指针变量pa = La->elem;pb = Lb->elem;Lc->listsize = Lc->length = La->length + Lb->length;pc = Lc->elem = (ElemType*)malloc(Lc->listsize * sizeof(ElemType));if (!Lc->elem)exit(OVERFLOW);//存储分配失败pa_last = La->elem + La->length - 1;//pa-last指向线性表La最后一个元素pb_last = Lb->elem + Lb->length - 1;//pb-last指向线性表Lb最后一个元素while (pa <= pa_last && pb <= pb_last){if (*pa <= *pb)*pc++ = *pa++;else*pc++ = *pb++;}while (pa <= pa_last) *pc++ = *pa++;//插入La中剩余元素while (pb <= pb_last)*pc++ = *pb++;//插入Lb中剩余元素
}int main()
{SqList La,Lb,Lc;InitList_Sq(&La);InitList_Sq(&Lb);Create(&La);Create(&Lb);MergeList_Sq(&La, &Lb, &Lc);printf("归并后的顺序表");Show(&Lc);system("pause");
}

实验一 顺序表基本操作的实现相关推荐

  1. 数据结构线性表的逻辑结构(三)顺序表基本操作的实现

    一. 实验目的 1. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二.  ...

  2. 顺序表基本操作函数总结

    /*************************************************************************************/ /*   顺序表基本操作 ...

  3. PTA第一章作业1--数据结构基本概念 顺序表基本操作

    6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  4. 【PTA】6-1 顺序表基本操作(10 分)

    题目来自 网络与信息安全-数据结构作业1-数据结构基本概念 6-1 https://fancyking.ml/archives/71 原题描述 6-1 顺序表基本操作(10 分) 本题要求实现顺序表元 ...

  5. 顺序表基本操作<小白一听就懂!!!><超详细><接地气>

    顺序表基本操作<小白一听就懂!!!><超详细>&&<接地气> ***小编前言*** 完整代码 // 头文件 //主函数 // 初始化 /*运用指针* ...

  6. 6-2 顺序表基本操作 (10 分)

    6-2 顺序表基本操作 (10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数. L是一个顺序表, 函数Status ListInsert_Sq(SqList &L ...

  7. 6-2 顺序表基本操作 (10分)

    6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  8. 6-1 顺序表基本操作(10 分)

    6-1 顺序表基本操作(10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...

  9. java数据结构实验一顺序表,java数据结构实验代码之升序顺序表

    java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...

  10. 顺序表基本操作实现(详细)

    顺序表的目录 1.顺序表的概念 2. 熟悉顺序表的分类? 3.熟悉顺序表的优缺点 4.动态顺序表的基本操作 4.0包含头文件和结构体 4.1初始化,销毁,扩容 4.2尾插,尾删,头插,头删 4.3任意 ...

最新文章

  1. Linux内存技术分析(下)
  2. 自定义控件的子控件支持设计模式
  3. 【PP操作手册】创建公司间交易采购订单
  4. 快速启动栏的现实桌面快捷方式
  5. 使用XAMPP和Hbuilder搭建PHP环境(XAMPP中Apache启动失败解决方法)
  6. 《网络对抗》Exp5 MSF基础应用
  7. MySQL 结果集问题(获取不存在表的信息导致的隐藏bug)
  8. VMware 找不到我的计算机
  9. python矩阵乘法代码_python3 单行代码实现矩阵相乘
  10. Oracle EBS系统维护工具
  11. protocol buffer生成C语言的实现
  12. poj--1625Censored!+AC自动机上的dp+大数
  13. javaSE基础全覆盖
  14. Genero BDL错误
  15. java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
  16. 基于Unity3d的虚拟装配中的机械运动仿真
  17. 考研数学 每日一题 第一题
  18. elementUI表格动态渲染错乱
  19. java实现在线预览功能(支持xlx,word,ppt,dwg等格式转Pdf)
  20. 计算机键盘的简洁键,键盘上的功能键【简单电脑常识】

热门文章

  1. 微信小程序 图片缓存
  2. 【开源】MagicData-RAMC :180小时中文对话式语音数据集正式发布
  3. json转map几种方法
  4. Win32_1深入浅出windows消息机制
  5. 100部超级好电影,100组优秀的字体设计(不看后悔系列)
  6. python爬网页html乱码问题
  7. nodejs 游戏框架_Pomelo:网易开源基于 Node.js 的游戏服务端框架
  8. spark的安装详细步骤
  9. cad迷你画图2020中文版
  10. 揭秘阿里巴巴的客群画像