有序顺序表的插入
来源:互联网 发布:韩国网络女主播李秀彬 编辑:程序博客网 时间:2024/04/30 08:31
6-2 有序顺序表的插入(10 分)
本题要求实现递增顺序表的有序插入函数。L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序插入一个数据。比如:原数据有:2 5,要插入一个元素3,那么插入后顺序表为2 3 5。要考虑扩容的问题。
函数接口定义:
Status ListInsert_SortedSq(SqList &L, ElemType e);
裁判测试程序样例:
//库函数头文件包含#include<stdio.h>#include<malloc.h>#include<stdlib.h>//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;//顺序表的存储结构定义#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int ElemType; //假设线性表中的元素均为整型typedef struct{ ElemType* elem; //存储空间基地址 int length; //表中元素的个数 int listsize; //表容量大小}SqList; //顺序表类型定义//函数声明Status ListInsert_SortedSq(SqList &L, ElemType e);//顺序表初始化函数Status InitList_Sq(SqList &L){ //开辟一段空间 L.elem = (ElemType*)malloc(LIST_INIT_SIZE * sizeof(ElemType)); //检测开辟是否成功 if(!L.elem){ exit(OVERFLOW); } //赋值 L.length = 0; L.listsize = LIST_INIT_SIZE; return OK;}//顺序表输出函数void ListPrint_Sq(SqList L){ ElemType *p = L.elem;//遍历元素用的指针 for(int i = 0; i < L.length; ++i){ if(i == L.length - 1){ printf("%d", *(p+i)); } else{ printf("%d ", *(p+i)); } }}int main(){ //声明一个顺序表 SqList L; //初始化顺序表 InitList_Sq(L); int number = 0; ElemType e; scanf("%d", &number);//插入数据的个数 for(int i = 0; i < number; ++i) {scanf("%d", &e);//输入数据 ListInsert_SortedSq(L, e); } ListPrint_Sq(L); return 0;}/* 请在这里填写答案 */
输入格式:第一行输入接下来要插入的数字的个数第二行输入数字输出格式:输出插入之后的数字
输入样例:
52 3 9 8 4
输出样例:
2 3 4 8 9
以下为代码:
#include <stdio.h>#include <stdlib.h>//函数状态码定义#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2//顺序表的存储结构定义#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int Status;typedef int ElemType;typedef struct{ ElemType *elem; int length; int listsize;}SqList;Status ListInsert_SortedSq(SqList &L, ElemType e);Status InitList_Sq(SqList &L);void ListPrint_Sq(SqList L);Status ListInsert_SortedSq(SqList &L,ElemType e){ ElemType *p = L.elem, *q; if(L.length >= L.listsize) { L.elem = (ElemType*)realloc(L.elem,(L.listsize + INFEASIBLE)*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.listsize += INFEASIBLE; } while(*p < e && p <= L.elem+L.length-1) ++p; for(q = L.elem+L.length-1; q >= p; q--) *(q+1) = *q; *p = e; ++L.length; return OK;}Status InitList_Sq(SqList &L){ int n; L.elem = (ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK;}void ListPrint_Sq(SqList L){ ElemType *p = L.elem;//遍历元素用的指针 for(int i = 0; i < L.length; ++i){ if(i == L.length - 1){ printf("%d", *(p+i)); } else{ printf("%d ", *(p+i)); } }}int main(){ //声明一个顺序表 SqList L; //初始化顺序表 InitList_Sq(L); int number = 0; ElemType e; scanf("%d", &number);//插入数据的个数 for(int i = 0; i < number; ++i) {scanf("%d", &e);//输入数据 ListInsert_SortedSq(L, e); } ListPrint_Sq(L); return 0;}
阅读全文
0 0
- 有序顺序表的插入
- 有序顺序表的插入
- 1.有序顺序表的插入
- 有序顺序表的插入实现
- 6-2 有序顺序表的插入
- 顺序表——有序顺序表的插入
- 第四次作业 6-2 有序顺序表的插入
- PTA 6-2 有序顺序表的插入
- 6-2 有序顺序表的插入(10 分)
- -2 有序顺序表的插入(10 分)
- (顺序有序表)插入元素
- 顺序表的创建,插入,删除,查找,逆序以及合并两个有序的顺序表
- 将x插入到顺序表中保持顺序表的递增有序
- 有序链表的插入
- 有序链表的插入
- 有序链表的插入
- 有序链表的插入
- 有序链表的插入
- springMVC4--文件上传CommonsMultipartFile
- 智能分单算法
- Va_list Va_start va_arg Va_end 的用法
- pygame绘制椭圆方法
- HDU-4825(01树模板题)
- 有序顺序表的插入
- 11.1第十周java作业
- 字典、列表、元祖、字符串的综合(2)
- 林轩田--机器学习技法--SVM笔记3--核支持向量机(Kenel+Support+Vector)
- 《WinDbg 命令三部曲:(三)WinDbg SOSEX 扩展命令手册》
- 线性筛板子
- Java静态对象和非静态对象有什么区别??
- 空语句的测试
- 关于火狐浏览器自动填充支付密码问题解决办法