实验一 顺序表基本操作的实现
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. 掌握线性表的逻辑结构: 2. 顺序表基本操作的实现: 3. 掌握利用C/C++编程语言实现数据结构的编程方法: 4. 通过上机时间加强利用数据结构解决实际应用问题的能力: 二. ...
- 顺序表基本操作函数总结
/*************************************************************************************/ /* 顺序表基本操作 ...
- PTA第一章作业1--数据结构基本概念 顺序表基本操作
6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...
- 【PTA】6-1 顺序表基本操作(10 分)
题目来自 网络与信息安全-数据结构作业1-数据结构基本概念 6-1 https://fancyking.ml/archives/71 原题描述 6-1 顺序表基本操作(10 分) 本题要求实现顺序表元 ...
- 顺序表基本操作<小白一听就懂!!!><超详细><接地气>
顺序表基本操作<小白一听就懂!!!><超详细>&&<接地气> ***小编前言*** 完整代码 // 头文件 //主函数 // 初始化 /*运用指针* ...
- 6-2 顺序表基本操作 (10 分)
6-2 顺序表基本操作 (10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数. L是一个顺序表, 函数Status ListInsert_Sq(SqList &L ...
- 6-2 顺序表基本操作 (10分)
6-2 顺序表基本操作 (10分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...
- 6-1 顺序表基本操作(10 分)
6-1 顺序表基本操作(10 分) 本题要求实现顺序表元素的增.删.查找以及顺序表输出共4个基本操作函数.L是一个顺序表,函数Status ListInsert_Sq(SqList &L, i ...
- java数据结构实验一顺序表,java数据结构实验代码之升序顺序表
java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...
- 顺序表基本操作实现(详细)
顺序表的目录 1.顺序表的概念 2. 熟悉顺序表的分类? 3.熟悉顺序表的优缺点 4.动态顺序表的基本操作 4.0包含头文件和结构体 4.1初始化,销毁,扩容 4.2尾插,尾删,头插,头删 4.3任意 ...
最新文章
- Linux内存技术分析(下)
- 自定义控件的子控件支持设计模式
- 【PP操作手册】创建公司间交易采购订单
- 快速启动栏的现实桌面快捷方式
- 使用XAMPP和Hbuilder搭建PHP环境(XAMPP中Apache启动失败解决方法)
- 《网络对抗》Exp5 MSF基础应用
- MySQL 结果集问题(获取不存在表的信息导致的隐藏bug)
- VMware 找不到我的计算机
- python矩阵乘法代码_python3 单行代码实现矩阵相乘
- Oracle EBS系统维护工具
- protocol buffer生成C语言的实现
- poj--1625Censored!+AC自动机上的dp+大数
- javaSE基础全覆盖
- Genero BDL错误
- java sha1加密ascii码_MD5,SHA1,SHA256,SHA512等常用加密算法
- 基于Unity3d的虚拟装配中的机械运动仿真
- 考研数学 每日一题 第一题
- elementUI表格动态渲染错乱
- java实现在线预览功能(支持xlx,word,ppt,dwg等格式转Pdf)
- 计算机键盘的简洁键,键盘上的功能键【简单电脑常识】