vs2013下編譯執行,實現了雙向鍊錶類list 的 建構函式,拷貝構造、析構函式、賦值運算子過載、清空、頭插、頭刪、尾插、尾刪、插入、刪除、逆序和刪除鍊錶中重複的資料值函式等。
直接貼**:
dulist.h 類宣告、定義、成員函式定義。
#pragma once
//雙向鍊錶
#include#includeusing namespace std;
typedef int datatype;
struct listnode
datatype _data;
listnode * _prev;
listnode * _next;
};class list
list(const list & l) }
~list() }
void clear() //清空鍊錶
_head=_tail = null; //最終結果
} list& operator=(list &l)
void pushback(datatype &x)
else
}void popback()
else
}void pushfront(datatype & x)
else
//可能沒完
} void reverse() }
void popfront()
else
}listnode * find(datatype & x)
begin = begin->_next;
} return null; //呼叫者需要檢查結果是否合法
} void insert(listnode * pos, datatype x)
else
}void erase(listnode* pos)
if (pos == _head)
else if (pos == _tail)
else
delete pos;
} void print()
cout << "null"<_next;
while (it!=begin&&it!=null)
it = it->_next;
}begin = begin->_next;
} }private:
listnode * _head;
listnode * _tail;
};
main.cpp 測試用例
#include"dulist.h"
void test1()
void test2()
void test3() //unique
int main()
雙向鍊錶的簡單實現
雙向鍊錶的特點是 第乙個元素的 prev 是none 1 雙向鍊錶 2class node 3def init self,node none,prev none,next none 4 注意順序,因為例項化,一般不會關鍵字傳參,如果node none 1 1 是給node形參的,如果形參列表不同,則...
雙向鍊錶(C實現)
list.h ifndef list h define list h typedef struct node node typedef struct list list initlist int insertnode list l,void data,int size int deletenode ...
雙向鍊錶(c 實現)
雙向鍊錶與單鏈表有許多的相似之處,但是也有不同之處。雙向鍊錶與單鏈表主要的不同在於 雙向鍊錶可以從兩個方向進行遍歷,但是單鏈表只能從頭節點遍歷到尾節點,不能從尾節點遍歷到頭節點,對於鍊錶中一些插入和刪除等操作,雙向鍊錶較單鏈表更為簡單些。所以,雙向鍊錶有其存在的特殊意義。下面是通過c 來實現雙向鍊錶...