第三周项目1--顺序表的基本运算(3)
来源:互联网 发布:黄静案 知乎 编辑:程序博客网 时间:2024/06/16 20:08
问题及代码:
/**Copyright (c) 2015,烟台大学计算机学院*All rights reserved.*文件名称:线性表的基本运算(3).cpp*作者:杜文文*完成日期:2015年9月20日*问题描述:顺序表的其余四个基本运算插入数据元素ListInsert、删除数据元素ListDelete、初始化线性表InitList、销毁线性表DestroyList*输入描述:此程序没有输入*程序输出:插入,删除,初始化,销毁后的结果*/#ifndef LIST_H_INCLUDED#define LIST_H_INCLUDED#define MaxSize 50typedef int ElemType;typedef struct{ ElemType data[MaxSize]; int length;} SqList;void CreateList(SqList *&L, ElemType a[], int n);//用数组创建线性表void InitList(SqList *&L);//初始化线性表InitList(L)void DestroyList(SqList *&L);//销毁线性表DestroyList(L)bool ListEmpty(SqList *L);//判定是否为空表ListEmpty(L)int ListLength(SqList *L);//求线性表的长度ListLength(L)void DispList(SqList *L);//输出线性表DispList(L)bool GetElem(SqList *L,int i,ElemType &e);//求某个数据元素值GetElem(L,i,e)int LocateElem(SqList *L, ElemType e);//按元素值查找LocateElem(L,e)bool ListInsert(SqList *&L,int i,ElemType e);//插入数据元素ListInsert(L,i,e)bool ListDelete(SqList *&L,int i,ElemType &e);//删除数据元素ListDelete(L,i,e)#endif // LIST_H_INCLUDED#endif#include <stdio.h>#include <malloc.h>#include "xianxingbiao.h"//用数组创建线性表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;}//初始化线性表InitList(L)void InitList(SqList *&L) //引用型指针{ L=(SqList *)malloc(sizeof(SqList)); //分配存放线性表的空间 L->length=0;}//销毁线性表DestroyList(L)void DestroyList(SqList *&L){ free(L);}//判定是否为空表ListEmpty(L)bool ListEmpty(SqList *L){ return(L->length==0);}//求线性表的长度ListLength(L)int ListLength(SqList *L){ return(L->length);}//输出线性表DispList(L)void DispList(SqList *L){ int i; if (ListEmpty(L)) return; for (i=0; i<L->length; i++) printf("%d ",L->data[i]); printf("\n");}//求某个数据元素值GetElem(L,i,e)bool GetElem(SqList *L,int i,ElemType &e){ if (i<1 || i>L->length) return false; e=L->data[i-1]; return true;}//按元素值查找LocateElem(L,e)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;}//插入数据元素ListInsert(L,i,e)bool ListInsert(SqList *&L,int i,ElemType e){ int j; if (i<1 || i>L->length+1) return false; //参数错误时返回false i--; //将顺序表逻辑序号转化为物理序号 for (j=L->length; j>i; j--) //将data[i..n]元素后移一个位置 L->data[j]=L->data[j-1]; L->data[i]=e; //插入元素e L->length++; //顺序表长度增1 return true; //成功插入返回true}//删除数据元素ListDelete(L,i,e)bool ListDelete(SqList *&L,int i,ElemType &e){ int j; if (i<1 || i>L->length) //参数错误时返回false return false; i--; //将顺序表逻辑序号转化为物理序号 e=L->data[i]; for (j=i; j<L->length-1; j++) //将data[i..n-1]元素前移 L->data[j]=L->data[j+1]; L->length--; //顺序表长度减1 return true; //成功删除返回true}#include "xianxingbiao.h"//实现测试函数int main(){ SqList *sq; InitList(sq); ListInsert(sq, 1, 5); ListInsert(sq, 2, 3); ListInsert(sq, 1, 4); DispList(sq); return 0;}
运行结果:
知识点总结:
这个程序是在之前两个程序的基础上又增加了四个基本运算,且都是同样完成的。
学习心得:
第一个项目都是线性表的基本运算,只是一个比一个多增加了几项内容,还有三个项目呢。。快点做啊
0 0
- 第三周项目1顺序表的基本运算3
- 第三周项目(1):顺序表的基本运算
- (第三周项目1)顺序表的基本运算
- 第三周项目(1)-顺序表的基本运算
- 第三周 项目一-顺序表的基本运算(3)
- 第三周项目1-顺序表的基本运算
- 第三周实践项目1-顺序表的基本运算
- 第三周—项目1 顺序表的基本运算
- 第三周 项目1 - 顺序表的基本运算
- 第三周项目1顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- 第三周项目1 顺序表的基本运算
- 第三周 项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1-顺序表的基本运算
- 第三周项目1 顺序表的基本运算(2)
- 第三周【项目1 - 顺序表的基本运算】
- 第三周 项目1-顺序表的基本运算
- java中volatile关键字的含义
- Codeforces 577B Modulo Sum 鸽巢原理
- 调整数组顺序使奇数位于偶数前面
- Android 自定义Toast不能指定图片ID
- MFC中对象、句柄、ID之间的区别.---------非常经典写得真好
- 第三周项目1--顺序表的基本运算(3)
- 【数论】[NOIP2014]bzoj3751 codevs3732 解方程
- Objective-C 从零开始
- NSDcitrionary哈希
- Java简单易懂的生成不重复随机整数数组的方法
- HDU 5463 Clarke and minecraft
- 视频项目的PCB规范
- SQL扩展之T-SQL中的数据操纵语言
- 继承父类配置smarty