编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)
2016-07-01 13:58
627 查看
/* *Copyright (c) 2016, 烟台大学计算机学院 *All rights reserved. *文件名称:main.cpp *作者:张旺华 *完成日期: 2016 年 7 月 1 日 *版本号:v1.0 *问题描述:编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char) * */ #include <iostream> #include <stdio.h> #include <malloc.h> using namespace std; typedef char ElemType; #define Maxsize 50 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) //销毁线性表 { free(L); } bool ListEmpty(SqList *L) //判断线性表是否为空 { return (L->length==0); } int ListLength(SqList *L) //求线性表的长度 { return (L->length); } void DispList(SqList *L) //输出线性表 { int i; if(L->length==0) return; for(i=0;i<L->length;i++) printf("%c ",L->data[i]); printf("\n"); } bool GetElem(SqList *L,int i,ElemType &e) //求线性表中某个元数的值 { if(i<1||i>L->length) return false; e=L->data[i]; return true; } int LocateElem (SqList *L,ElemType e) //按元素值查找 { int i=0; while(i<L->length&&L->data[i]!=e) i++; if(i>=L->length) return 0; else return i+1 ; } bool ListInsert(SqList *L,int i,ElemType e) //插入数据元素 { int j; if(i<1||i>L->length) 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(;i<L->length-1;i++) { L->data[i]=L->data[i+1]; } L->length--; return true; } int main() { SqList *h; ElemType e; cout<<"顺序表的基本运算如下:"<<endl; cout<<"(1)初始化顺序表h:"<<endl; InitList(h); cout<<"(2)依此采用尾插法插入a,b,c,d,e元素:"<<endl; ListInsert(h,1,'a'); ListInsert(h,2,'b'); ListInsert(h,3,'c'); ListInsert(h,4,'d'); ListInsert(h,5,'e'); cout<<"(3)输出顺序表h:"<<endl; DispList(h); cout<<"(4)顺序表h长度为:"<<ListLength(h)<<endl; printf("(5)顺序表h为%s\n",(ListEmpty(h)?"空":"非空")); GetElem(h,3,e); cout<<"(6)顺序表h的第3个元素是:"<<e<<endl; cout<<"(7)元素a的位置:"<<LocateElem(h,'a')<<endl; cout<<"(8)在第四个元素位置上插入f元素:"<<endl; ListInsert(h,4,'f'); cout<<"(9)输出顺序表h:"<<endl; DispList(h); cout<<"(10)删除h的第3个元素:"<<endl; ListDelete(h,3,e); cout<<"(11)输出顺序表h:"<<endl; DispList(h); cout<<"(12)释放顺序表h:"<<endl; DestroyList(h); }
运行结果:
学习心得:数据结构实践操作第一题。
相关文章推荐
- ARC机制
- IntelliJ IDEA常用快捷键——基于Eclipse
- bat 监视进程
- Android进阶之路——安卓编程规范
- Spring面试题
- Paint House II
- adb命令
- 商城倒计时(时分秒倒计时、分秒毫秒倒计时)
- jedis入门实例
- 关于客户端检测
- linux useradd(adduser)命令参数及用法详解(linux创建新用户命令)
- mysql -prompt选项
- leetcode38. Count and Say
- 对TCP说三道四
- ASP.NET MVC 教程学习
- iOS与Android用户界面(UI)设计规范
- ORB SLAM2运行步骤/怎样跑通orbslam2
- DOM整理
- UINavigationController 学习摘要
- android流式布局:FlexboxLayout用法探析(一)