数据结构第二次上机 第二章之顺序表
来源:互联网 发布:淘宝直通车开通条件 编辑:程序博客网 时间:2024/06/05 07:54
实验题1:实现顺序表的各种基本运算的算法
内容:编写一个程序exp2-1.cpp,实现顺序表的各种运算(假设顺序表的元素类型为char),并在此基础上完成如下功能:
(1)初始化顺序表L;
(2)采用尾插法依次插入元素a,b,c,d,e;
(3)输出顺序表L;
(4)输出顺序表L的长度;
(5)判断顺序表L是否为空;
(6)输出顺序表L的第3个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入元素f;
(9)输出顺序表L;
(10)删除L的第3个元素;
(11)输出顺序表L;
(12)释放顺序表L。
代码:
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define MaxSize 50typedef char ElemType;typedef struct{ElemType data[MaxSize];int length;}SqList;void InitList(SqList *&L){L= (SqList *)malloc(sizeof(SqList));//分配存放线性表的空间L->length=0;//置空线性表长度为0}void DestroyList(SqList *L) //销毁线性表(DestroyList){free(L);}bool ListEmpty(SqList *L) //判断线性表是否为空表;{return(L->length==0);}int ListLength(SqList *L) //求线性表的长度,直接返回length 的长度即可;{return(L->length);}void DispList(SqList *L) //输出线性表,依次显示L中各元素的值;{int i;if(ListEmpty(L))return;for(i=0;i<L->length;i++)printf(" %c ",L->data[i]);printf("\n");}bool GetElem(SqList *L,int i,ElemType &e) //输出顺序表第3个元素,{if(i<1||i>L->length)return false;e=L->data[i-1];return true;}int LocateElem(SqList *L,ElemType e) //该运算顺序查找第一个值域与e 相等的元素的逻辑序号(找到后返回一个大于0的值)若这样的元素不存在,则返回值为0;{int i=0;while(i<L->length&&L->data[i]!=e)i++;if(i>L->length)return 0;elsereturn i+1;}bool ListInsert(SqList *L,int i,ElemType e) //插入数据元素; 注意与链表的尾插法的不同;{int j;if(i<1||i>L->length+1)return false;i--;for(j=L->length;j>i;j--)L->data[j]=L->data[j-1];L->data[i]=e;L->length++;return true;}bool ListDelete(SqList *&L,int i,ElemType &e) //删除数据元素;{int j;if(i<1||i>L->length)return false;i--;e=L->data[i];for(j=i;j<L->length-1;j++)L->data[j]=L->data[j+1];L->length--;return true;}int main(){SqList *L;ElemType e;printf("顺序表的计算功能如下:\n");printf(" 1.初始化顺序表L\n");InitList(L);printf(" 2.依次插入a,b,c,d,e元素\n");ListInsert(L,1,'a');ListInsert(L,2,'b');ListInsert(L,3,'c');ListInsert(L,4,'d');ListInsert(L,5,'e');printf(" 3.输出顺序表L: ");DispList(L);printf(" 4.输出顺序表L的长度= % d\n",ListLength(L));printf(" 5.判断顺序表L是否为空 %s\n",(ListEmpty(L)?"空":"非空")); // 叮叮! 三木比较也可以用在这里;GetElem(L,3,e);printf(" 6.输出顺序表L的第3个元素 = % c\n",e);printf(" 7.输出元素a的位置 = %d\n",LocateElem(L,'a'));printf(" 8.在第4个元素位置上插入f元素\n");ListInsert(L,4,'f');printf(" 9.输出顺序表L: ");DispList(L);printf(" 10.删除L的第3个元素\n");ListDelete(L,3,e);printf(" 11.输出顺序表L: ");DispList(L);printf(" 12.释放顺序表L\n");DestroyList(L); return 0;}
阅读全文
0 0
- 数据结构第二次上机 第二章之顺序表
- 数据结构第二次上机 第二章之单链表
- 数据结构第三次上机 第四章之顺序串
- 数据结构 第二次上机 实验二
- sdut数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找(sdut_2040)
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 数据结构上机实验之顺序查找
- 我OEM,1158就能进去,5500提示无监听程序,求大神指点
- Android获得本地IP地址
- Python中 字典排序、列表排序
- centos 安装 hadoop2.8.2
- c++stl的deque(双端队列)
- 数据结构第二次上机 第二章之顺序表
- ubuntu16.04下安装opencv2.4.11forjava+IDEA集成
- C++之函数重载重铸版
- 3.4 Java类的构造函数
- spring核心
- 华硕x45vd安装黑苹果Yosemite 10.10.3记录
- 青岛吃虾day1
- linux多线程,获取线程ID
- SSH与SSM学习之SSH整合04——Struts2与Spring整合