在單鏈表中必然需要定義乙個頭節點來指向鍊錶的第乙個元素,
struct node :public object
;mutable node m_header;
這樣直接定義會有乙個問題,頭節點的構造會呼叫t類的建構函式,這顯然時不需要的,解決方案如下:
mutable struct : public object
m_header;
template class list
virtual
bool insert(const t& e)=0;
virtual
bool insert(int i, const t& e)=0;
virtual
bool remove(int i)=0;
virtual
bool
set(int i, const t& e)=0;
virtual
bool
get(int i, t& e)const =0;
virtual
int find(const t& e) const =0;
virtual
int length()const =0;
virtual
void clear()=0;
};
template class linklist : public list;
mutable struct : public object
m_header;
// node m_header;
int m_length;
int m_step;
node* m_current;
node* position(int i) const
return ret;
}virtual node* create()
virtual
void destroy(node* pn)
public:
linklist()
void push_back(const t& e)
void push_front(const t& e)
void pop_back()
void pop_front()
t back() const
t front() const
bool insert(const t& e)
bool insert(int i, const t& e)
else
}return ret;
}bool remove(int i)
currect->next = todel->next;
m_length--;
destroy(todel);
}return ret;
}bool
set(int i, const t& e)
return ret;
}virtual t get(int i) const
else
}bool
get(int i, t& e)const
return ret;
}int find(const t& e) const
else
}return ret;
}int length()const
void clear()
}virtual
bool move(int i, int step = 1)
return ret;
}virtual
bool next()
return (i == m_step);
}virtual t current()
else
}virtual
bool end()
~linklist()
};
單鏈表 模板類
include using namespace std 宣告單鏈錶類模板 為了說明友元類 template class list 定義鍊錶結點類模板 template class listnode listnode type item data item next null public 成員函式 ...
單鏈表模板類
鍊錶是最基本的資料結構,是一組不連續的資料的集合,鍊錶中每個結點除包含結點元素外,還包含下一結點的位址。對鍊錶可以實現插入 刪除 查詢以及顯示等操作。單鏈表模板類list.h ifndef list h define list h include using namespace std templa...
C 模板類 單鏈表
c 作業,用模板類寫鍊錶,完成了對基本的單鏈表的插入,刪除等。include using namespace std templatestruct node templateclass linkedlist linkedlist t find int index 返回索引對應的值 void remo...