///////////////////
//FIB數(shù)列的棧實現(xiàn)//
///////////////////
#include"LinkedStack.h"
#include<stdlib.h>
struct Node
{
    long n;
    int tag;
};

long Fibnacci(long n)                           
{                                           
    LinkedStack<Node> S;                   
    Node *w=new Node;    //分配動態(tài)內(nèi)存,如果不分配則程序錯誤                   
    if(w==NULL)                               
    {                                       
        cerr<<"分配內(nèi)存失誤!"<<endl;   
        exit(1);                           
    }                                       
    long sum=0;                               
    do
    {
        while(n>1)          //不斷的將結(jié)構(gòu)體壓入棧
        {
            w->n=n;
            w->tag=1;
            S.Push(*w);
            n--;
        }
        sum=sum+n;
   
   
        while(S.IsEmpty()==false)
        {
            S.Pop(*w);
            if(w->tag==1)
            {
                w->tag=2;
                S.Push(*w);
                n=w->n-2;
                break;
            }
        }
    }while(S.IsEmpty()==false);
    return sum;
}