数据结构题 Big Bang

题目链接:点我点我

题意:线性表的一些操作

题解:书上模板

  1 //Big Bang
  2 #include <string.h>
  3 #include <malloc.h>
  4 #include <stdio.h>
  5 #include <stdlib.h>
  6 #include <math.h>
  7
  8 #define TRUE 1
  9 #define FALSE 0
 10 #define OK 1
 11 #define ERROR 0
 12 #define INFEASIBLE -1
 13 #define LIST_INIT_SIZE 10 //线性表存储空间的初始分配量
 14 #define LISTINCREMENT 2 //线性表存储空间的分配增量
 15
 16 typedef int Status;
 17 typedef int Boolean;
 18
 19 typedef struct{
 20     char name[55];
 21 }ElemType;
 22
 23 typedef struct{
 24     ElemType *elem; //存储空间基址
 25     int length; //当前长度
 26     int listsize; //当前分配的存储容量(以sizeof(ElemType)为单位)
 27 }SqList;
 28
 29 Status InitList(SqList *L){ //算法2.3 构造一个空的顺序线性表
 30     (*L).elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
 31     if(!(*L).elem) exit(OVERFLOW); //存储分配失败
 32     (*L).length=0; //空表长度为0
 33     (*L).listsize=LIST_INIT_SIZE; //初始存储容量
 34     return OK;
 35 }
 36
 37 Status ListInsert(SqList *L,int i,ElemType e){ //算法2.4 在L中第i个位置之前插入新的数据元素e,L的长度加1
 38     //初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1
 39     ElemType *newbase,*q,*p;
 40     if(i<1||i>(*L).length+1) return ERROR; //i的值不合法
 41     if((*L).length>=(*L).listsize){ //当前存储空间已满,增加分配
 42         newbase=(ElemType*)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));
 43         if(!newbase) exit(OVERFLOW); //存储分配失败
 44         (*L).elem=newbase; //新基址
 45         (*L).listsize+=LISTINCREMENT; //增加存储容量
 46     }
 47     q=(*L).elem+i-1;
 48     for(p=(*L).elem+(*L).length-1;p>=q;--p) *(p+1)=*p; //插入位置及之后的元素左移
 49     *q=e;
 50     ++(*L).length; //表长增1
 51     return OK;
 52 }
 53
 54 Status ListDelete(SqList *L,int i,ElemType *e){ //算法2.5 删除L的第i个数据元素,并用e返回其值,L的长度减1
 55    //初始条件:顺序线性表L已存在,1≤i≤ListLength(L)
 56    ElemType *p,*q;
 57    if(i<1||i>(*L).length) return ERROR; //i值不合法
 58    p=(*L).elem+i-1; //p为被删除元素的位置
 59    *e=*p; //被删除元素的值赋给e
 60    q=(*L).elem+(*L).length-1; //表尾元素的位置
 61    for(++p;p<=q;++p) *(p-1)=*p; //被删除元素之后的元素左移
 62    (*L).length--; //表长减一
 63    return OK;
 64 }
 65
 66
 67 Status ListTraverse(SqList L,void(*vi)(ElemType*)){ //依次对L的每个数据元素调用函数vi().一旦vi()失败,则操作失败
 68     //初始条件:顺序线性表L已存在
 69     ElemType *p;
 70     p=L.elem;
 71     for(int i=1;i<=L.length;i++){
 72         if(i!=1) printf(" ");
 73         vi(p++);
 74     }
 75     printf("\n");
 76     return OK;
 77 }
 78
 79 int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)){
 80     //算法2.6 在顺序线性表中第1个值与e满足compare()的元素的位序
 81     //若找到,则返回其在L中的位序,否则返回0
 82     int i=1;//i的初值为第1个元素的位序
 83     ElemType *p;//p的初值为第1个元素的存储为位置
 84     p=L.elem;
 85     while(i<=L.length&&!(*compare)(*p++,e)) ++i;
 86     if(i<=L.length) return i;
 87     else return 0;
 88 }
 89
 90 void ListShow(SqList L){
 91     for(int i=0;i<L.length;i++){
 92         if(i) printf(" ");
 93         printf("%s",L.elem[i].name);
 94     }
 95     printf("\n");
 96 }
 97
 98 Status cmp(ElemType e1,ElemType e2){
 99     return (Status)!strcmp(e1.name,e2.name);
100 }
101
102 int main(){
103     SqList namelist;
104     InitList(&namelist);
105     char op[10];
106     int pos;
107     ElemType e;
108     while(scanf("%s",op)!=EOF){
109         if(!strcmp(op,"insert")){
110             scanf("%d%s",&pos,e.name);
111             ListInsert(&namelist,pos,e);
112         }
113         else if(!strcmp(op,"delete")){
114             scanf("%s",e.name);
115             pos=LocateElem(namelist,e,cmp);
116             ListDelete(&namelist,pos,&e);
117         }
118         else if(!strcmp(op,"show")){
119             ListShow(namelist);
120         }
121         else if(!strcmp(op,"search")){
122             scanf("%s",e.name);
123             printf("%d\n",LocateElem(namelist,e,cmp));
124         }
125     }
126     return 0;
127 }
时间: 2024-10-11 23:19:31

数据结构题 Big Bang的相关文章

树和二叉树-第6章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第6章 树和二叉树 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼06 树和二叉树  

数组和广义表-第5章-《数据结构题集》答案解析-严蔚敏吴伟民版

习题集解析部分 第5章 数组和广义表 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       本习题文档的存放目录:数据结构\▼配套习题解析\▼05 数组和广义表       文档中源码的存放目录:数据结构\▼配

图-第7章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第7章 图 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼07 图       文档中源

串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版

习题集解析部分 第4章 串 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       本习题文档的存放目录:数据结构\▼配套习题解析\▼04 串       文档中源码的存放目录:数据结构\▼配套习题解析\▼04

绪论-第1章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第1章  绪论 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑          本习题文档的存放目录:数据结构\▼配套习题解析\▼01 绪论\        文档中源码的存放目录:数据结构\▼配套习

动态存储管理-第8章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第8章 动态存储管理 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼08 动态存储管理

外部排序-第11章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第11章 外部排序 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼11 外部排序    

不明觉厉的数据结构题

这篇文章会列一点非常规的数据结构题. tyvj4393 纸条 大意是有若干条纸条,每次操作是把一个纸条挪动一下,然后求一个位置的所有纸条上数的和.所有纸条的长度之和不超过20W,纸条数量啥的都是10W. 首先我们可以分块,不过标解不知道高到哪里去了,对于所有的纸条按照长度大于小于分个类,小于的挪动时暴力修改,大于的反正不到个,询问时枚举一遍就行. 求老司机讲一下线段树的做法- #include <iostream> #include <stdio.h> #include <s

文件-第12章-《数据结构题集》习题解析-严蔚敏吴伟民版

习题集解析部分 第12章 文件 ——<数据结构题集>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑       相关测试数据下载  链接? 数据包       本习题文档的存放目录:数据结构\▼配套习题解析\▼12 文件       文