// linklist.cpp : 定義控制台應用程式的入口點。
//定義的鍊錶不含頭結點
#include "stdafx.h"
#include
using namespace std;
template
//定義結點
struct node
; //定義鍊錶
template
class linklist
; template
linklist::linklist()//預設建構函式
template
linklist::linklist(const linklist& otherlist)//拷貝建構函式
else
otherlistcurrent = otherlistcurrent->next;
}
} }
template
linklist::~linklist()
template
void linklist::createinserthead()//頭插法
} template
void linklist::createinsertrear()//尾插法 尾插法和拷貝建構函式都有單獨考慮第乙個結點的情況
else
} } template
void linklist::initlist()
template
bool linklist::isempty()
else
} template
int linklist::length()
template
void linklist::destorylist()
head = null;
m_length = 0;
} template
void linklist::getfirstdata(type& firstdata)
else
data = current->data;
}
} template
void linklist::insertfirst(type newdata)
template
void linklist::insertlast(type newdata)//尾部插入元素
node*newnode = new node;
newnode->data = newdata;
if (current==null)
else
m_length++;
} template
void linklist::deletefirst(type& data)
m_length--;
} template
void linklist::deletelast(type& data)
node*temp = current->next;
data = temp->data;
current->next = temp->next;
delete temp;
m_length--;
}
} template
void linklist::reverse()
}
} template
const linklist& linklist::operator=(const linklist&otherlist)
if (otherlistcurrent!=null)
else
otherlistcurrent = otherlistcurrent->next;
} }
} return *this;
} template
ostream& operator<< <>(ostream& cout,const linklist& list)
cout<*list = new linklist;
list->createinserthead();
cout<<"list:"<<*listlist->createinsertrear();
if (!list->isempty())
不帶頭結點的單鏈表
slist.h pragma once typedef int sldatatype typedef struct slistnode slistnode 不帶頭節點的單鏈表 鍊錶初始化 void slistinit slistnode phead 建立新結點 slistnode slistnewn...
不帶頭結點的單鏈表
不帶頭結點的鍊錶的實現 核心是直接設定頭指標指向第乙個節點 要注意此時的l的位址可能會發生改變.同時還要注意一級指標和二級指標的區別.注意linklist l和linklist l的區別 和帶結點的單鏈表的操作相比較,要考慮到頭指標就是頭結點,在一些會改變頭結點的情況下要仔細考慮.include i...
不帶頭結點的單鏈表
單鏈表也可以不設頭結點,如圖212 所示。顯 然,基於這種結構的基本操作和帶有頭結點的線性鏈 表基本操作是不同的。bo2 8.cpp 是不帶頭結點的線 性鍊錶的基本操作。bo2 8.cpp 不帶頭結點的單鏈表 儲存結構由c2 2.h定義 的部分基本操作 9個 define destroylist c...