zoukankan      html  css  js  c++  java
  • 顺序表简单模版

      1 #pragma once
      2 #include<iostream>
      3 template<class T1>
      4 class CLineList{
      5 private:
      6     T1* pData;
      7     T1  nCount;
      8     int  nTabLenth;
      9 
     10 public:
     11     CLineList():nCount(0), nTabLenth(10){
     12         pData = new T1[nTabLenth];
     13         memset(pData, 0, sizeof(T1)*nTabLenth);
     14     }
     15     ~CLineList()
     16     {
     17         delete[] pData;
     18     }
     19 
     20 public:
     21     void Initialization(){
     22         nCount = 0;
     23         nTabLenth = 10;
     24         pData = new T1[nTabLenth];
     25         memset(pData, 0, sizeof(T1)*nTabLenth);
     26     }
     27     void InsertData(T1 nData) {
     28         if (nCount == nTabLenth){
     29             ExpandSpace();
     30         }
     31         pData[nCount] = nData;
     32         nCount++;
     33 
     34     }
     35     void InsertData(T1 nData, int nPos){
     36         if (nCount == nTabLenth){
     37             ExpandSpace();
     38         }
     39         if (nPos > nCount){
     40             pData[nCount] = nData;
     41             nCount++;
     42         }
     43         else{    //插入方式使用位置方式
     44             T1 *pTempData = new T1[nCount - nPos + 1];
     45             memcpy_s(pTempData, sizeof(T1)*(nCount - nPos + 1),
     46                 pData + (nPos - 1), sizeof(T1)*(nCount - nPos + 1));
     47             pData[nPos - 1] = nData;
     48             memcpy_s(pData + nPos, sizeof(T1)*(nCount - nPos + 1),
     49                 pTempData, sizeof(T1)*(nCount - nPos + 1));
     50             delete[] pTempData;
     51             nCount++;
     52         }
     53     }
     54     T1  GetElem(int nPos){
     55         return pData[nPos - 1];
     56     }
     57     int  FindData(T1 nData){
     58         for (int i = 0; i < nTabLenth; i++){
     59             if (pData[i] == nData){
     60                 return i + 1;
     61             }
     62         }
     63         return -1;
     64     }
     65     void DeleteData(T1 n1Data){
     66         if (FindData(nData)){
     67             int temp = FindData(nData) - 1;
     68             memcpy(pData + temp, pData + temp + 1, (nCount - temp - 1)*sizeof(T1));
     69             nCount--;
     70         }
     71         else{
     72             printf("没找到!");
     73         }
     74         if (nCount < nTabLenth / 2){
     75             //缩小空间
     76             NarrowSpace();
     77         }
     78     }
     79     void ClearLinTable(){
     80         memset(pData, 0, nTabLenth);
     81         nCount = 0;
     82     }
     83     int  GetLength(){
     84         return nCount;
     85     }
     86     bool ExpandSpace(){
     87         T1 *pTemp = new T1[nTabLenth * 2];
     88         memset(pTemp, 0, (nTabLenth * 2)*sizeof(T1));
     89         memcpy(pTemp, pData, (nTabLenth * 2)*sizeof(T1));
     90         delete[]pData;
     91         pData = pTemp;
     92         nTabLenth *= 2;
     93         return true;
     94     }
     95     bool NarrowSpace(){
     96         T1 *pTemp = new T1[nTabLenth / 2];
     97         memset(pTemp, 0, (nTabLenth / 2)*sizeof(T1));
     98         memcpy(pTemp, pData, (nTabLenth / 2)*sizeof(T1));
     99         delete[]pData;
    100         pData = pTemp;
    101         nTabLenth *= 2;
    102         return true;
    103     }
    104 
    105 };
    让数据变得更安全!
  • 相关阅读:
    委托demo
    事件demo
    数据结构与算法分析表ADT
    数据结构与算法分析栈ADT
    Access的“自动编号”问题
    C#获取时间函数
    在load事件中关闭窗体
    panel里面显示form的问题
    将RichTextBox 的内容直接写入数据库
    利用反射来创建一个Form.
  • 原文地址:https://www.cnblogs.com/Alyoyojie/p/5147700.html
Copyright © 2011-2022 走看看