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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fchain.h

?? 求最短路徑的C++ 源代碼
?? H
字號:
#ifndef Chain_
#define Chain_

// file fchain.h
// extended chain including delete by key
#include "stdafx.h"
#include <iostream>
#include "cnode.h"
#include <stdexcept>
using namespace std;

template <class T> class ChainIterator;

template<class T>
class Chain {
   friend  ChainIterator<T>;
   public:
      Chain() {first = 0;}
      ~Chain() {Erase();} 
      bool IsEmpty() const {return first == 0;}
      int Length() const; 
      bool Find(int k, T& x) const; 
      int Search(const T& x) const; 
      Chain<T>& Delete(int k, T& x); 
      Chain<T>& Delete(T& x);
      Chain<T>& Insert(int k, const T& x); 
      ChainNode<T> * First() const {return first;}
      void Zero() {first = 0;}
      void Erase(); // delete all nodes
      Chain<T>& Append(const T& x);
      void Output(ostream& out) const;
   private:
      ChainNode<T> *first,  // pointer to first node
                   *last;   // pointer to last node
};


template<class T>
void Chain<T>::Erase()
{// Delete all nodes in chain.
   ChainNode<T> *next;
   while (first) {
      next = first->link;
      delete first;
      first = next;}
}

template<class T>
int Chain<T>::Length() const
{// Return the number of elements in the chain.
   ChainNode<T> *current = first;
   int len = 0;
   while (current) {
      len++;
      current = current->link;}
   return len;
}

template<class T>
bool Chain<T>::Find(int k, T& x) const
{// Set x to the k'th element in the chain.
 // Return false if no k'th; return true otherwise.
   if (k < 1) return false;
   ChainNode<T> *current = first;
   int index = 1;  // index of current
   while (index < k && current) {
      current = current->link;
      index++;}
   if (current) {x = current->data;
                 return true;}
   return false; // no k'th element
}

template<class T>
int Chain<T>::Search(const T& x) const
{// Locate x.  Return position of x if found.
 // Return 0 if x not in the chain.
   ChainNode<T> *current = first;
   int index = 1;  // index of current
   while (current && current->data != x) {
      current = current->link;
      index++;}
   if (current) return index;
   return 0;
}

template<class T>
Chain<T>& Chain<T>::Delete(int k, T& x)
{// Set x to the k'th element and delete it.
 // Throw OutOfBounds exception if no k'th element.
   if (k < 1 || !first)
      throw logic_error("is wrong"); // no k'th
   
   // p will eventually point to k'th node
   ChainNode<T> *p = first;

   // move p to k'th & remove from chain
   if (k == 1) // p already at k'th
      first = first->link; // remove
   else { // use q to get to k-1'st
      ChainNode<T> *q = first;
      for (int index = 1; index < k - 1 && q;
                          index++)
         q = q->link;
      if (!q || !q->link)
         throw logic_error("is wrong"); // no k'th
      p = q->link; // k'th
      if (p == last) last = q;
      q->link = p->link;} // remove from chain

   // save k'th element and free node p
   x = p->data;
   delete p;
   return *this;
}

template<class T>
Chain<T>& Chain<T>::Delete(T& x)
{// Delete element matching x.
 // Throw BadInput exception if no match.
   ChainNode<T> *current = first,
                *trail = 0; // one behind current

   // search for match
   while (current && current->data != x) {
      trail = current;
      current = current->link;}
   if (!current) throw logic_error("is wrong"); // no match

   // match found in node current
   x = current->data; // save matching element

   // remove current from chain
   if (trail) trail->link = current->link;
   else first = current->link; // current is first node

   delete current;  // free node
   return *this;
}

template<class T>
Chain<T>& Chain<T>::Insert(int k, const T& x)
{// Insert x after the k'th element.
 // Throw OutOfBounds exception if no k'th element.
 // Pass NoMem exception if inadequate space.
   if (k < 0) throw logic_error("is wrong");

   // p will eventually point to k'th node
   ChainNode<T> *p = first;
   for (int index = 1; index < k && p;
                       index++)  // move p to k'th
      p = p->link;
   if (k > 0 && !p) throw logic_error("is wrong");// no k'th

   // insert
   ChainNode<T> *y = new ChainNode<T>;
   y->data = x;
   if (k) {// insert after p
           y->link = p->link;
           p->link = y;}
   else {// insert as first element
         y->link = first;
         first = y;}
   if (!y->link) last = y; // new last element
   return *this;
}

template<class T>
Chain<T>& Chain<T>::Append(const T& x)
{// Add x at right end.
   ChainNode<T> *y;
   y = new ChainNode<T>;
   y->data = x; y->link = 0;
   if (first) {// chain is not empty
               last->link = y;
               last = y;}
   else // chain is empty
        first = last = y;
   return *this;
}

template<class T>
void Chain<T>::Output(ostream& out) const
{// Insert the chain elements into the stream out.
   ChainNode<T> *current;
   for (current = first; current;
                         current = current->link)
      out << current->data << "  ";   //與GraphNode <<  重載
}

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

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃视频一区二区三区| 亚洲精品国产无套在线观| 色天使久久综合网天天| 国产·精品毛片| 久久99精品国产.久久久久| 乱一区二区av| 激情久久久久久久久久久久久久久久| 蜜臀va亚洲va欧美va天堂| 蜜桃视频免费观看一区| 精品影院一区二区久久久| 国产精品77777竹菊影视小说| 激情五月激情综合网| 久久99久久久久久久久久久| 国产在线视视频有精品| 丁香激情综合国产| 91在线看国产| 日韩一级完整毛片| 精品sm在线观看| 亚洲欧美一区二区在线观看| 亚洲免费av网站| 国产精品自拍三区| 成人激情图片网| 欧美三级日韩三级国产三级| 精品国产1区二区| 亚洲免费毛片网站| 亚洲成人午夜影院| 国产一区二区女| 欧美中文字幕一区二区三区| 日韩欧美成人一区| 日韩一区欧美一区| 久久精品国内一区二区三区| 不卡欧美aaaaa| 日韩精品中文字幕在线一区| 最新久久zyz资源站| 日日欢夜夜爽一区| 成人高清视频在线观看| 欧美一区2区视频在线观看| 国产精品情趣视频| 日本免费新一区视频| 国产精品亚洲一区二区三区在线 | 亚洲免费视频中文字幕| 日本免费新一区视频| 97se亚洲国产综合自在线| 日韩欧美一区二区免费| 亚洲午夜激情av| 成人av电影观看| 欧美成人三级在线| 亚洲成人激情综合网| 成人午夜在线播放| 久久久久久久久久看片| 奇米亚洲午夜久久精品| 欧美性一级生活| 亚洲欧美日韩久久| 成人性视频网站| www国产精品av| 日本不卡一区二区三区| 欧美日韩久久久久久| 亚洲欧美日韩电影| 成人美女视频在线看| 精品粉嫩超白一线天av| 麻豆国产欧美一区二区三区| 在线精品观看国产| 亚洲欧美另类久久久精品2019| 国内精品国产三级国产a久久| 在线成人午夜影院| 午夜影院久久久| 欧美午夜精品免费| 亚洲bt欧美bt精品| 欧美老肥妇做.爰bbww| 亚洲黄色片在线观看| 色综合久久九月婷婷色综合| 中文字幕一区二区三区在线不卡 | 精品国产乱码久久久久久蜜臀| 午夜欧美电影在线观看| 欧美日韩一二三区| 亚洲va天堂va国产va久| 欧美日韩精品免费观看视频| 丝袜亚洲精品中文字幕一区| 欧美亚洲一区三区| 日本不卡123| 欧美成va人片在线观看| 韩国一区二区视频| 国产嫩草影院久久久久| 成人app软件下载大全免费| 亚洲三级理论片| 欧美日韩精品免费观看视频| 日韩高清不卡在线| 久久众筹精品私拍模特| 成人激情小说网站| 午夜久久久影院| 久久亚洲综合色一区二区三区 | 国产精品美女久久久久aⅴ| 成a人片亚洲日本久久| 一区二区三区.www| 91精选在线观看| 黄色资源网久久资源365| 国产精品萝li| 欧美人xxxx| 成人免费看片app下载| 亚洲黄网站在线观看| 欧美不卡一区二区三区四区| 成人av网站在线| 视频一区欧美精品| 国产亚洲一区字幕| 欧美视频一区二区三区四区| 精品一区二区免费看| 亚洲人成影院在线观看| 在线不卡中文字幕播放| 国产69精品久久久久毛片| 一区二区三区日韩欧美| 欧美mv日韩mv亚洲| av一区二区三区黑人| 午夜亚洲福利老司机| 国产精品丝袜久久久久久app| 欧美色图在线观看| 成人成人成人在线视频| 日本aⅴ亚洲精品中文乱码| 亚洲欧美综合在线精品| 日韩女优毛片在线| 欧美性色欧美a在线播放| 国产一区二区免费看| 亚洲r级在线视频| 亚洲欧美一区二区三区孕妇| 日韩欧美久久久| 欧美性色aⅴ视频一区日韩精品| 国产剧情一区二区| 天天综合日日夜夜精品| 中文字幕在线一区二区三区| 欧美xxxx在线观看| 6080国产精品一区二区| 在线精品视频免费观看| 91丝袜美腿高跟国产极品老师| 精品在线视频一区| 日日噜噜夜夜狠狠视频欧美人 | 成人免费精品视频| 国产在线乱码一区二区三区| 天天色天天操综合| 亚洲综合免费观看高清在线观看| 国产欧美日产一区| 国产亚洲女人久久久久毛片| 日韩欧美一级精品久久| 日韩一级片在线播放| 91精品国产全国免费观看| 欧美亚洲日本一区| 欧美综合色免费| 欧美日韩在线精品一区二区三区激情| 成人福利电影精品一区二区在线观看 | 日韩一区二区视频在线观看| 欧美日本在线播放| 91麻豆精品91久久久久同性| 在线成人午夜影院| 在线91免费看| 欧美疯狂做受xxxx富婆| 在线播放亚洲一区| 欧美一级生活片| 久久夜色精品国产噜噜av| 国产亚洲女人久久久久毛片| 久久综合九色综合欧美就去吻| 精品国精品自拍自在线| 久久精品夜夜夜夜久久| 国产精品久久久久久久裸模| 中文字幕亚洲精品在线观看| 亚洲欧美成人一区二区三区| 一区二区三区欧美激情| 视频一区二区不卡| 麻豆国产91在线播放| 国产精品一二三区| 97aⅴ精品视频一二三区| 欧美日韩亚洲不卡| 日韩欧美一区在线| 欧美国产激情一区二区三区蜜月| 中文字幕亚洲在| 午夜欧美在线一二页| 国产自产高清不卡| 91丨九色丨国产丨porny| 欧美久久一二区| 久久久欧美精品sm网站| 亚洲欧洲av色图| 免费精品视频在线| 丁香婷婷深情五月亚洲| 精品视频在线视频| 精品日产卡一卡二卡麻豆| 国产亚洲精久久久久久| 亚洲精品国产第一综合99久久| 美日韩一区二区| 97精品久久久久中文字幕 | 亚洲成人手机在线| 国产精品一区二区三区网站| 91香蕉视频mp4| 日韩欧美一区二区视频| 亚洲视频香蕉人妖| 狠狠色2019综合网| 欧美性感一区二区三区| 国产清纯白嫩初高生在线观看91 | av在线不卡免费看| 日韩一级在线观看| 一区二区三区中文在线| 国产乱妇无码大片在线观看| 欧美精品一二三区| 亚洲欧美日韩国产另类专区 |