线性表之顺序表基本操作
来源:互联网 发布:java redis isinmulti 编辑:程序博客网 时间:2024/06/13 19:28
SqHeader.h
#ifndef SQHEADER_H_INCLUDED#define SQHEADER_H_INCLUDED//顺序表的存储结构#define MaxSize 50typedef char ElemType;typedef struct{ ElemType date[MaxSize]; int length;}SqList;#endif // SQHEADER_H_INCLUDEDSqList.cpp
#include <iostream>#include <stdio.h>#include <stdlib.h>#include "sqHeader.h"using namespace std;//建立顺序表void CreateList(SqList *&L,ElemType a[],int n){//方法是将给定的含有n个元素的数组的每个元素依稀放入到顺序表中,并将n赋给顺序表的长度域 int i; L=(SqList *)malloc(sizeof(SqList)); for(i=0;i<n;i++) { L->date[i]=a[i]; } L->length=n;}//初始化线性表void InitList(SqList *&L){ L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间 L->length = 0;}//销毁线性表void DestroyList(SqList *&L){ free(L);}//判断线性表是否为空bool ListEmpty(SqList *&L){ return (L->length==0);}//求线性表的长度int ListLength(SqList *&L){ return L->length;}//输出线性表void DisplayList(SqList *&L){ int i; for(i=0;i<L->length;i++) { printf("%c ",L->date[i]); } printf("\n");}//求线性表中某个元素的值bool GetElem(SqList *L,int i,ElemType &e){//该方法用e返回L中第i个元素的值 if(i<1||i>L->length) return false; e=L->date[i-1]; return true;}//按元素之查找int LocateElem(SqList *L,ElemType e){//该方法在L中从第一个元素开始查找与e相等元素的逻辑ixuhao,若不存在则返回0 int i=0; while(i<L->length&&L->date[i]!=e) i++; if(i>=L->length) return 0; else return i+1;}//插入数据元素bool ListInsert(SqList *&L,int i,ElemType e){//该方法在L上第i个位置插入元素e int j; if(i<1||i>L->length+1) return false; i--; //使i变为物理符号 for(j=L->length;j>i;j--) { L->date[j]=L->date[j-1]; } L->date[i]=e; L->length++; return true;}//删除数据元素bool DeleteElem(SqList *&L,int i,ElemType &e){ int j; if(i<1||i>L->length) return false; i--; //使i变为物理符号 e=L->date[i]; for(j=i;j<L->length-1;j++) L->date[j]=L->date[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:");DisplayList(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:");DisplayList(L);printf(" (10)删除L的第3个元素\n"); DeleteElem(L,3,e);printf(" (11)输出顺序表L:");DisplayList(L);printf(" (12)释放顺序表L\n");DestroyList(L);}运行结果:
0 0
- 线性表之顺序表基本操作
- 数据结构之线性表中顺序表的基本操作
- 数据结构之线性表(顺序表)的基本操作
- C++数据结构之线性顺序表基本操作
- 线性表之顺序操作
- 线性顺序表的基本操作
- 顺序线性表的基本操作算法
- 线性表_顺序存储/基本操作
- 线性表----顺序栈的基本操作
- 数据结构-顺序线性表基本操作实现
- 线性表顺序存储的基本操作
- 线性表顺序存储结构基本操作
- 顺序线性表的基本操作
- 基本数据结构之线性表-顺序表
- 线性表的基本操作实现及其应用之顺序表的建立与操作实现
- 线性表之顺序表常见操作
- 线性表之顺序表增强操作
- 数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化
- codevs 天梯 单词接龙 DFS
- Bmob查询获取内部类的数据
- C语言实验——求一个3*3矩阵对角线元素之和 (sdut oj)
- 【b503】篝火晚会
- codevs天梯四色问题
- 线性表之顺序表基本操作
- 树莓派上搭建语音识别服务出现error code:10407
- 星乐视频
- LVS+keepalived 搭建负载均衡
- RecyclerView和ListView的异同点
- LayoutInflater解析
- C++指针——(4)指针与动态内存管理
- RecyclerView和ListView实现上下拉刷新的方式的汇总
- Codeforces Round #394 (Div. 2) C. Dasha and Password