C 實現簡單的雙向鍊錶

2021-07-08 22:09:09 字數 1420 閱讀 1900

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 來實現雙向鍊錶...