using System;namespace CountNum3
{
//双向循环链表
public class MyIntLinkList
{
//static member variable for public
static public MyIntLinkList Head; //generally member variable for public
public MyIntLinkList Prev;
public MyIntLinkList Next;
public uint Data;
//Construct function for public
public MyIntLinkList(MyIntLinkList prev,uint uData)
{
if (prev != null)//双向循环链表,除非初始化链表,否则不可能有null的前驱
{
prev.Next = this;
MyIntLinkList.Head.Prev = this;
this.Prev = prev;
this.Next = MyIntLinkList.Head;
}
this.Data = uData;
} //Member function for public: delete current object in linklist
public MyIntLinkList Remove()
{
this.Next.Prev = this.Prev;
this.Prev.Next = this.Next;
return this.Next;
} //static function for public: create a linklist
static public MyIntLinkList CreateLinklist(uint nHeadData)
{
MyIntLinkList.Head = new MyIntLinkList(null,nHeadData);
MyIntLinkList.Head.Prev = MyIntLinkList.Head;
MyIntLinkList.Head.Next = MyIntLinkList.Head;
return MyIntLinkList.Head;
}
}
}
{
//双向循环链表
public class MyIntLinkList
{
//static member variable for public
static public MyIntLinkList Head; //generally member variable for public
public MyIntLinkList Prev;
public MyIntLinkList Next;
public uint Data;
//Construct function for public
public MyIntLinkList(MyIntLinkList prev,uint uData)
{
if (prev != null)//双向循环链表,除非初始化链表,否则不可能有null的前驱
{
prev.Next = this;
MyIntLinkList.Head.Prev = this;
this.Prev = prev;
this.Next = MyIntLinkList.Head;
}
this.Data = uData;
} //Member function for public: delete current object in linklist
public MyIntLinkList Remove()
{
this.Next.Prev = this.Prev;
this.Prev.Next = this.Next;
return this.Next;
} //static function for public: create a linklist
static public MyIntLinkList CreateLinklist(uint nHeadData)
{
MyIntLinkList.Head = new MyIntLinkList(null,nHeadData);
MyIntLinkList.Head.Prev = MyIntLinkList.Head;
MyIntLinkList.Head.Next = MyIntLinkList.Head;
return MyIntLinkList.Head;
}
}
}
{
public:
static MyDLinklist* pHead;
MyDLinklist* pNext;
MyDLinklist* pPrev;
public:
MyDLinklist(MyDLinklist* prev,int data)//默认插入尾部
{
if (prev!=NULL)
{
prev->pNext = this;
pHead->pPrev = this;
pPrev = prev;
pNext = pHead;
}
this->data = data;
} static MyDLinklist* CreateDLinklist(int data)
{
MyDLinklist::pHead = new MyDLinklist(NULL,data);
MyDLinklist::pHead->pPrev = MyDLinklist::pHead;
MyDLinklist::pHead->pNext = MyDLinklist::pHead;
return MyDLinklist::pHead;
}
static bool ReleaseDLinklist()
{
MyDLinklist*p = MyDLinklist::pHead->pNext;
while (p->pNext != p)
{
p = p->pNext;
delete p->pPrev;
}
delete MyDLinklist::pHead;
}
private:
int data;
};这是我现在翻的,无法执行。提示错误:
Number3 error LNK2001: 无法解析的外部符号 "public: static class MyDLinklist * MyDLinklist::pHead" (?pHead@MyDLinklist@@2PAV1@A)快急疯了。谁能帮帮我。不胜感激。
http://www.zhdgps.com/downsoft/download/code.rar
我尝试用vc6,vc7去编译,都不可以。请教如何做了。~
MyDLinklist* MyDLinklist::pHead = NULL;
我之前少了个类型,我看书知道需要在函数外赋值,我也写了这句,只是不全
MyDLinklist::pHead = NULL;按Mackz大侠方法可以了。但是,语义上,如何解释呢?我只是一个赋值语句,为什么还要写类型修饰?
定义一个变量的话当然需要类型了。(我只是记得应该像Mackz(在相互)说得这样做,为什么要加上类型,我也说不上来,汗!~~)