线性表(顺序表)之C++封装
来源:互联网 发布:淘宝挂钩 编辑:程序博客网 时间:2024/06/06 06:51
线性表概述
线性表是最基本、最简单、也是最常用的一种数据结构。在线性表中数据元素之间的关系是线性,数据元素可以看成是排列在一条线上或一个环上。
线性表分为静态线性表和动态线性表,常见的有顺序表(静态的)、单向链表(动态的)和双向链表(动态的)。
以下是对顺序表的封装:
.h文件:
#pragma onceclass CZzcList{public:CZzcList(int nSize);~CZzcList();void ClearList();//清空线性表bool IsListEmpty();//是否为空int GetLengthOfList();//获取线性表的长度bool GetItemFromList(int i,int* elem);//由位置获取元素值int GetPosOfItem(int* elem);//获取元素第一次出现的位置bool GetPreItem(int* CurElem,int* PreElem);//得到前驱元素bool GetNextItem(int* CurElem,int* NextElem);//得到后继元素bool InsertItemToList(int i,int* elem);//插入一个元素bool DeleteItemFromList(int i,int*elem = NULL);//删除一个元素void ListTraverse();//遍历private:int* m_pList;int m_nSize;int m_nLength;};
.CPP文件:
#include "StdAfx.h"#include "ZzcList.h"#include <iostream>using namespace std;CZzcList::CZzcList(int nSize){m_nSize = nSize;m_pList = new int[m_nSize];m_nLength = 0;}CZzcList::~CZzcList(){if (m_pList != NULL){delete[]m_pList;m_pList = NULL;}}void CZzcList::ClearList(){m_nLength = 0;}int CZzcList::GetLengthOfList(){return m_nLength;}bool CZzcList::IsListEmpty(){return m_nLength == 0?true:false;}bool CZzcList::GetItemFromList(int i,int* elem){if ( i<0 || i>m_nLength-1 ){return false;}*elem = m_pList[i];}int CZzcList::GetPosOfItem(int* elem){for (int i=0;i<m_nLength;i++){if (*elem == m_pList[i]){return i;}}return -1;}bool CZzcList::GetPreItem(int* CurElem,int* PreElem){int nPos = GetPosOfItem(CurElem);if (nPos == -1 || nPos == 0){return false;}*PreElem = m_pList[nPos-1];return true;}bool CZzcList::GetNextItem(int* CurElem,int* NextElem){int nPos = GetPosOfItem(CurElem);if (nPos == -1 || nPos == m_nLength-1){return false;}*NextElem = m_pList[nPos+1];return true;}bool CZzcList::InsertItemToList(int i,int* elem){if(m_nLength >= m_nSize) return false;if (i<0 || i>m_nLength) return false;for (int k=m_nLength-1;k>=i;k--){m_pList[k+1] = m_pList[k];}m_pList[i] = *elem;m_nLength++;return true;}bool CZzcList::DeleteItemFromList(int i,int*elem){//if(m_nLength <= 0) return false;if (i<0 || i>m_nLength) return false;if(elem != NULL) *elem = m_pList[i];for (int k = i;k < m_nLength-1;k++){m_pList[k] = m_pList[k+1];}m_nLength--;return true;}void CZzcList::ListTraverse(){for (int i = 0;i < m_nLength;i++){cout<<m_pList[i]<<endl;}}
阅读全文
0 0
- 线性表(顺序表)之C++封装
- C数据结构-线性表之顺序表
- C语言线性表之顺序表
- 线性结构之顺序表------C实现
- 线性顺序表C
- 数据结构 - 线性表之顺序表 (c 语言)
- 线性表(顺序sqlist.c)
- 线性表顺序实现(C语言)
- 数据结构---线性顺序表操作(c++)
- 线性表之顺序表示(二)
- 线性表(上)之顺序存储
- 线性表玩具之顺序表版本(C语言)
- 数据结构之---c语言实现线性表的顺序表
- 线性表之顺序表(C语言实现)
- C语言实现线性表之顺序表
- 数据结构之线性表——顺序表(C#)
- 线性表之顺序存储结构--C实现
- 线性表之顺序存储结构--C实现
- MySQL的Query Cache原理分析
- 人人都看得懂的正则表达式
- Mysql报错:communications link failure
- Ubuntu添加root用户和登录界面
- 【PAT】【Advanced Level】1012. The Best Rank (25)
- 线性表(顺序表)之C++封装
- 在Android studio中用网格布局做计算机界面
- ubuntu安装
- How to enable IOMMU in Fedora
- Android控件 如何把控
- CSS选择器
- Java Io流总结
- Angular2 学习
- java线程的六个状态