亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? chain.h

?? datastucutre and algorithms, application, in C
?? H
字號:
// linked implementation of a linear list
// derives from abstract class linearList just to make sure
// all methods of the ADT are implemented

#ifndef chain_
#define chain_

#include<iostream>
#include<sstream>
#include<string>
#include "linearList.h"
#include "chainNode.h"
#include "myExceptions.h"

using namespace std;

class linkedDigraph;
template <class T> class linkedWDigraph;

template<class T>
class chain : public linearList<T> 
{
   friend linkedDigraph;
   friend linkedWDigraph<int>;
   friend linkedWDigraph<float>;
   friend linkedWDigraph<double>;
   public:
      // constructor, copy constructor and destructor
      chain(int initialCapacity = 10);
      chain(const chain<T>&);
      ~chain();

      // ADT methods
      bool empty() const {return listSize == 0;}
      int size() const {return listSize;}
      T& get(int theIndex) const;
      int indexOf(const T& theElement) const;
      void erase(int theIndex);
      void insert(int theIndex, const T& theElement);
      void output(ostream& out) const;

   protected:
      void checkIndex(int theIndex) const;
            // throw illegalIndex if theIndex invalid
      chainNode<T>* firstNode;  // pointer to first node in chain
      int listSize;             // number of elements in list
};

template<class T>
chain<T>::chain(int initialCapacity)
{// Constructor.
   if (initialCapacity < 1)
   {ostringstream s;
    s << "Initial capacity = " << initialCapacity << " Must be > 0";
    throw illegalParameterValue(s.str());
   }
   firstNode = NULL;
   listSize = 0;
}

template<class T>
chain<T>::chain(const chain<T>& theList)
{// Copy constructor.
   listSize = theList.listSize;

   if (listSize == 0)
   {// theList is empty
      firstNode = NULL;
      return;
   }

   // non-empty list
   chainNode<T>* sourceNode = theList.firstNode;
                    // node in theList to copy from
   firstNode = new chainNode<T>(sourceNode->element);
                    // copy first element of theList
   sourceNode = sourceNode->next;
   chainNode<T>* targetNode = firstNode;
                    // current last node in *this
   while (sourceNode != NULL)
   {// copy remaining elements
      targetNode->next = new chainNode<T>(sourceNode->element);
      targetNode = targetNode->next;
      sourceNode = sourceNode->next;
   }
   targetNode->next = NULL; // end the chain
}

template<class T>
chain<T>::~chain()
{// Chain destructor. Delete all nodes in chain.
   while (firstNode != NULL)
   {// delete firstNode
      chainNode<T>* nextNode = firstNode->next;
      delete firstNode;
      firstNode = nextNode;
   }
}

template<class T>
void chain<T>::checkIndex(int theIndex) const
{// Verify that theIndex is between 0 and listSize - 1.
   if (theIndex < 0 || theIndex >= listSize)
   {ostringstream s;
    s << "index = " << theIndex << " size = " << listSize;
    throw illegalIndex(s.str());
   }

}

template<class T>
T& chain<T>::get(int theIndex) const
{// Return element whose index is theIndex.
 // Throw illegalIndex exception if no such element.
   checkIndex(theIndex);

   // move to desired node
   chainNode<T>* currentNode = firstNode;
   for (int i = 0; i < theIndex; i++)
      currentNode = currentNode->next;

   return currentNode->element;
}

template<class T>
int chain<T>::indexOf(const T& theElement) const
{// Return index of first occurrence of theElement.
 // Return -1 if theElement not in list.

   // search the chain for theElement
   chainNode<T>* currentNode = firstNode;
   int index = 0;  // index of currentNode
   while (currentNode != NULL && 
          currentNode->element != theElement)
   {
      // move to next node
      currentNode = currentNode->next;
      index++;
   }

   // make sure we found matching element
   if (currentNode == NULL)
      return -1;
   else
      return index;
}

template<class T>
void chain<T>::erase(int theIndex)
{// Delete the element whose index is theIndex.
 // Throw illegalIndex exception if no such element.
   checkIndex(theIndex);

   // valid index, locate node with element to delete
   chainNode<T>* deleteNode;
   if (theIndex == 0)
   {// remove first node from chain
      deleteNode = firstNode;
      firstNode = firstNode->next;
   }
   else 
   {  // use p to get to predecessor of desired node
      chainNode<T>* p = firstNode;
      for (int i = 0; i < theIndex - 1; i++)
         p = p->next;
   
      deleteNode = p->next;
      p->next = p->next->next; // remove deleteNode from chain
   }
   listSize--;
   delete deleteNode;
}

template<class T>
void chain<T>::insert(int theIndex, const T& theElement)
{// Insert theElement so that its index is theIndex.
   if (theIndex < 0 || theIndex > listSize)
   {// invalid index
      ostringstream s;
      s << "index = " << theIndex << " size = " << listSize;
      throw illegalIndex(s.str());
   }

   if (theIndex == 0)
      // insert at front
      firstNode = new chainNode<T>(theElement, firstNode);
   else
   {  // find predecessor of new element
      chainNode<T>* p = firstNode;
      for (int i = 0; i < theIndex - 1; i++)
         p = p->next;
   
      // insert after p
      p->next = new chainNode<T>(theElement, p->next);
   }
   listSize++;
}

template<class T>
void chain<T>::output(ostream& out) const
{// Put the list into the stream out.
   for (chainNode<T>* currentNode = firstNode;
                      currentNode != NULL;
                      currentNode = currentNode->next)
      out << currentNode->element << "  ";
}

// overload <<
template <class T>
ostream& operator<<(ostream& out, const chain<T>& x)
   {x.output(out); return out;}

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一二三| 亚洲国产日韩一级| 欧美精品一区二区在线播放| 精品婷婷伊人一区三区三| 在线不卡中文字幕| 香蕉成人伊视频在线观看| 国产一区二区三区四区五区入口| 成人手机在线视频| 在线观看一区二区精品视频| 日韩精品在线网站| 亚洲丝袜自拍清纯另类| 丝袜诱惑制服诱惑色一区在线观看| 国产久卡久卡久卡久卡视频精品| 欧美日韩亚洲高清一区二区| 午夜精品久久久久久久99水蜜桃| 不卡影院免费观看| 精品国产乱码久久久久久夜甘婷婷| 国产一区二区三区免费看 | 午夜伦欧美伦电影理论片| 这里是久久伊人| 一区二区成人在线观看| 国产成人免费视频网站| 久久综合九色综合97_久久久| 日韩av电影免费观看高清完整版| 一区二区不卡在线视频 午夜欧美不卡在| 色老汉av一区二区三区| 欧美成人国产一区二区| 首页国产丝袜综合| 日本aⅴ免费视频一区二区三区| 99国产精品久久久久久久久久久| 久久麻豆一区二区| 奇米一区二区三区| 日本一区二区免费在线| 国产在线精品一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 成人av中文字幕| 日韩av中文字幕一区二区三区| 久久久噜噜噜久久人人看 | 在线不卡欧美精品一区二区三区| 国产精品一区二区x88av| 亚洲综合视频在线| 在线看国产日韩| 国产一区二区三区四区五区入口| 亚洲自拍偷拍欧美| 久久久亚洲高清| 91精品欧美一区二区三区综合在| 成人性生交大片免费| 天堂蜜桃91精品| 国产福利91精品一区| 日本亚洲三级在线| 一区二区三区精密机械公司| 国产欧美日韩中文久久| 日韩欧美国产一区二区三区| 欧美制服丝袜第一页| 成人av在线一区二区三区| 久久成人免费电影| 欧美tk—视频vk| 欧美日韩国产中文| 国产在线精品视频| 蜜桃传媒麻豆第一区在线观看| 久久视频一区二区| 日韩一二在线观看| 国产精品1区2区| 美女精品一区二区| 免费不卡在线视频| 天堂va蜜桃一区二区三区 | 国产精品视频观看| 91免费视频网| 亚洲影院久久精品| 中文字幕一区二区三区色视频| 精品视频资源站| 在线观看av不卡| 91成人在线精品| 欧美性猛片aaaaaaa做受| 国产综合一区二区| 亚洲影院免费观看| 亚洲国产欧美在线| 亚洲成年人影院| 日本伊人色综合网| 肉色丝袜一区二区| 韩国理伦片一区二区三区在线播放| 日韩av不卡一区二区| 久久精品免费看| 国产一区在线精品| 国产999精品久久| 亚洲综合免费观看高清完整版 | 色综合天天做天天爱| 日韩高清一区二区| 免费在线欧美视频| 久久国产精品99精品国产| 国内精品伊人久久久久av影院 | 欧美揉bbbbb揉bbbbb| 欧美日韩久久一区| 337p亚洲精品色噜噜| 欧美大片国产精品| 国产拍揄自揄精品视频麻豆| 国产精品三级在线观看| 亚洲精品中文在线影院| 日韩综合一区二区| 国产一区免费电影| 成年人网站91| 欧美三级中文字幕在线观看| 欧美xxxxxxxxx| 欧美经典三级视频一区二区三区| 日韩你懂的在线观看| 国产午夜精品在线观看| 精品盗摄一区二区三区| 国产农村妇女精品| 亚洲chinese男男1069| 蜜桃视频第一区免费观看| 成人小视频免费观看| 在线一区二区三区四区五区| 欧美日韩国产综合一区二区三区| 日韩免费在线观看| 亚洲婷婷在线视频| 蜜臀av一区二区| 一本久久a久久精品亚洲| a亚洲天堂av| 成人高清免费在线播放| 欧美专区亚洲专区| 久久精品人人做人人综合| 一区二区三区四区精品在线视频| 日韩**一区毛片| 97久久人人超碰| 欧美一区二区在线免费播放| 91精品国产综合久久福利软件| 久久精品亚洲麻豆av一区二区 | 欧美福利视频导航| 国产精品欧美一区二区三区| 日韩电影免费在线看| 国产成人午夜精品5599| 777精品伊人久久久久大香线蕉| 国产精品久久久久aaaa| 综合久久久久久| 久久激五月天综合精品| 在线观看视频一区二区欧美日韩| 久久精品视频网| 久久精品久久精品| 欧美色爱综合网| 亚洲天堂精品视频| 国产久卡久卡久卡久卡视频精品| 欧美精品xxxxbbbb| 一区二区三区国产精华| 国产成a人亚洲精| 欧美成人高清电影在线| 日本欧美在线观看| 欧美亚男人的天堂| 亚洲色图都市小说| av一区二区三区| 国产日韩欧美激情| 国产精品综合av一区二区国产馆| 91精品国产品国语在线不卡| 亚洲已满18点击进入久久| www.欧美色图| 国产视频视频一区| 国产在线精品一区二区夜色| 欧美一级黄色片| 亚洲成a人v欧美综合天堂下载| 91视频www| 亚洲色图第一区| 96av麻豆蜜桃一区二区| 国产精品麻豆一区二区| 国产91清纯白嫩初高中在线观看 | 精品久久久久久久久久久久久久久| 亚洲sss视频在线视频| 欧美性生活久久| 午夜精品一区二区三区电影天堂 | 久久精品一二三| 国产精品一区在线观看你懂的| 日韩三级电影网址| 久久超级碰视频| 26uuu国产电影一区二区| 国产一区二区三区观看| 久久综合久久综合久久| 国产精品性做久久久久久| 久久久久亚洲综合| 丁香六月久久综合狠狠色| 国产精品久久久久久久久图文区| 国产91精品免费| 亚洲欧美日韩系列| 欧美在线不卡一区| 日韩国产欧美在线播放| 日韩欧美久久一区| 国产麻豆精品一区二区| 国产精品久久久久aaaa| 在线这里只有精品| 麻豆中文一区二区| 中文幕一区二区三区久久蜜桃| 成人看片黄a免费看在线| 一区二区三区四区在线播放| 欧美日韩国产片| 国产在线播放一区| 日韩理论片中文av| 欧美一级艳片视频免费观看| 国内成人免费视频| 亚洲免费成人av| 日韩欧美一区在线观看| 国产高清视频一区| 亚洲精品乱码久久久久久黑人 | 欧美成人艳星乳罩|