zoukankan      html  css  js  c++  java
  • C++编程练习(1)----“实现简单的线性表的顺序存储结构“

    线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

    故可以用数组来实现顺序存储结构。

    用C++编写的利用数组实现简单的读取、插入和删除功能的线性表。

    #include<iostream>
    #define MAXSIZE 20
    #define OK 1
    #define ERROR 0
    #define TURE 1
    #define FALSE 0
    typedef int Status;
    typedef int ElemType;
    class SqList{
    public:
    	SqList():length(1) {
    		for (int x=0;x<MAXSIZE;x++)
    			data[x]=0;
    	}
    	ElemType data[MAXSIZE];
    	int length;
    	Status ShowElem() const;
    	Status GetElem(int i, ElemType *e) ;
    	Status ListInsert(int i,ElemType e);
    	Status ListDelete(int i,ElemType *e);
    };
    Status SqList::ShowElem() const
    {
    	int k;
    	if (length==0)
    		return ERROR;
    	std::cout<<"当前线性表内容为:"<<std::endl;
    	for (k=1;k<=length;k++)
    		std::cout<<data[k-1]<<" 、 ";
    	std::cout<<std::endl;
    	return OK;
    }
    
    Status SqList::GetElem(int i,ElemType *e) 
    {
    	if (length==0 || i<1 || i>length)
    		return ERROR;
    	*e=data[i-1];
    	return OK;
    }
    
    Status SqList::ListInsert(int i,ElemType e) 
    {
    	int k;
    	if (length==MAXSIZE)
    		return ERROR;
    	if (i<1 || i>length)
    		return ERROR;
    	if (i<=length)
    	{
    		for (k=length-1;k>=i-1;k--)
    			data[k+1]=data[k];
    	}
    	data[i-1]=e;
    	length++;
    	return OK;
    }
    
    Status SqList::ListDelete(int i,ElemType *e)
    {
    	int k;
    	if (length==0)
    		return ERROR;
    	if (i<1 || i>length)
    		return ERROR;
    	*e=data[i-1];
    	if (i<length)
    	{
    		for (k=i-1;k<=length-1;k++)
    			data[k]=data[k+1];
    	}
    	length--;
    	return OK;
    }

    线性表顺序存储结构的优缺点:

    一、优点

    1、在存、读数据时,不管是哪个位置,时间复杂度都是O(1)。

    2、无须为表示表中元素之间的逻辑关系而增加额外的存储空间。

    二、缺点

    1、插入和删除时,需要移动大量元素,时间复杂度都是O(n)。

    2、当线性表长度变化较大时,难以确定存储空间的容量。

    3、造成存储空间的“碎片”。

  • 相关阅读:
    js实现键盘操作对div的移动或改变-------Day43
    深入浅出谈开窗函数(一)
    Android入门第八篇之GridView(九宫图)
    ubuntu sublime安装及配置
    人脸识别算法初次了解
    POJ 1509 Glass Beads
    在Ubuntu上下载、编译和安装Android最新源码
    目标检測的图像特征提取之(一)HOG特征
    WTL介绍
    svn加入新的文件夹
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768862.html
Copyright © 2011-2022 走看看