第三周 项目1-顺序表的基本运算
2016-09-17 20:12
417 查看
问题及描述:
/* * Copyright (c) 2016, 烟台大学计算机学院 * All rights reserved . * 文件名称:123.cpp * 作 者:谷建龙 * 完成时间:2016年9月13日 * 版本号:v1.0 *问题描述:目的是要测试“建立线性表”的算法CreateList,为查看建表的结果,需要实现“输出线性表”的算法DispList, 以及判断线性表是否为空的算法ListEmpty,以及main函数的算法。 在已经创建线性表的基础上,求线性表的长度ListLength、求线性表L中指定位置的某个数据元素GetElem、查找元素LocateElem的算法都可以实现了。 就在原程序的基础上增加: 增加求线性表的长度ListLength的函数并测试; 增加求线性表L中指定位置的某个数据元素GetElem的函数并测试; 增加查找元素LocateElem的函数并测试; 插入数据元素ListInsert、删除数据元素ListDelete、初始化线性表InitList、销毁线性表DestoryList; *输入描述:无输入 *程序输出:输出线性表并判断表是否为空,求线性表的长度、求线性表L中指定位置的某个数据元素、查找元素。 */ #include <stdio.h> #include<stdlib.h> #include<string.h> //必要的库文件包括 #define Maxsize 50 //必要的宏定义 typedef int ElemType; typedef struct { ElemType data[Maxsize]; int length; }Sqlist; void CreateList(Sqlist *&L,ElemType a[],int n); void DispList(Sqlist *&L); bool ListEmpty(Sqlist *&L); int ListLength(Sqlist *&L); bool GetElem(Sqlist *&L,int n,ElemType &e); int LocateElem(Sqlist *&L,ElemType &e); bool ListInsert(Sqlist *&L,ElemType &e,int n); bool ListDelete(Sqlist *&L,ElemType &e,int n); void InitList(Sqlist *&L); void DestoryList(Sqlist *&L); int main() { ElemType a[5]={2,3,1,4,5}; ElemType e; Sqlist *L; int b; CreateList(L,a,5); printf("顺序表的内容为:\n"); DispList(L); if(ListEmpty(L)) printf("顺序表为空表。\n"); else printf("顺序表不为空表。\n"); b=ListLength(L); printf("顺序表长度为:%d\n", b); GetElem(L,3,e); printf("顺序表第三个元素为:%d\n", e); e=6; printf("在顺序表第二个元素插入6的结果为:\n"); ListInsert(L,e,2); DispList(L); printf("顺序表删除第四个元素的结果为:\n"); ListDelete(L,e,4); DispList(L); return 0; } void CreateList(Sqlist *&L,ElemType a[],int n) { int i; L=(Sqlist *)malloc(sizeof(Sqlist)); for(i=0;i<n;i++) L->data[i]=a[i]; L->length=n; } void DispList(Sqlist *&L) { int i; for(i=0;i<L->length;i++) printf("%d ",L->data[i]); printf("\n"); } bool List 4000 Empty(Sqlist *&L) { return (L->length ==0); } int ListLength(Sqlist *&L) { return L->length; } bool GetElem(Sqlist *&L,int n,ElemType &e) { if(n<1 || n>L->length ) return false; e=L->data ; return true; } int LocateElem(Sqlist *&L,ElemType &e) { int i=0; while(i<L->length && e!=L->data[i]) i++; if(i>=L->length) return 0; else return i+1; } bool ListInsert(Sqlist *&L,ElemType &e,int n) { int i; if(n<1 || n>L->length) return false; n--; for(i=L->length;i>n;i--) L->data[i]=L->data[i-1]; L->data =e; L->length++; return true; } bool ListDelete(Sqlist *&L,ElemType &e,int n) { int i; if(n<1 || n>L->length) return false; n--; e=L->data ; for(i=n;i<L->length-1;i++) L->data[i]=L->data[i+1]; L->length--; return true; } void InitList(Sqlist *&L) { L=(Sqlist *)malloc(sizeof(Sqlist)); L->length=0; } void DestoryList(Sqlist *&L) { free(L); }
运行结果:
<img src="https://img-blog.csdn.net/20160917201309241?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
相关文章推荐
- 常用正则表达式实例
- C#控制台基础 创建文件夹
- Leetcode:4. Median of Two Sorted Arrays
- 详细解读LruCache类
- oracle数据库例外处理与视图
- WebService(2)_WSDL文档
- poj3686 The Windy's(拆点,费用流,好题)
- hdu5878 2016青岛网络赛-打表+二分
- JAVA常见的RuntimeException
- 在单链表上实现插入排序
- 作业总结
- HDU 5883 The Best Path (欧拉路或者欧拉回路)
- Leetcode :3. Longest Substring Without Repeating Characters
- 【原创】东方耀reactnative 视频22之-DrawerLayoutAndroid
- Linux/unix inode
- Arrow Dialog
- HDU5879(打表)
- 彩虹七色的RGB值
- phpstorm 2016.2 的最新破解方法(截止2016-8-1)
- 只是不想生活在最底层