4 C 實現雙向鍊錶

2021-10-23 09:37:03 字數 2424 閱讀 2455

4.用c++實現乙個雙向鍊錶

struct node

;

逆置乙個單鏈表

逆置雙向鍊錶

class list

;

提示的內容已經很明細了,注意細節。

#include using std::cout;

using std::endl;

struct node

~node()

int _data;

node *_pre;

node *_next;

};class list

void push_front(const int &data)

void push_back(const int &data)

void pop_front()

else

}void pop_back()

else

}bool find(int data)

pnode = pnode->_next;

}return false;

}else

}void insert(int pos, const int &data)

node *pnode = _head->_next;

while(pos)

node *newnode = new node(data);

newnode->_pre = pnode;

newnode->_next = pnode->_next;

pnode->_next = newnode;

pnode->_next = newnode;

++_size;

}void display() const

cout << endl;

}else

}void erase(const int &data)

pnode = pnode->_next;

}cout << "cannot find data!" << endl;

}else

}~list()

delete _head;

_head = nullptr;

}private:

node *_head; //頭指標

node *_tail; //尾指標

int _size; //鍊錶大小

};int main()

結果:

node(int = 0, node * = nullptr, node * = nullptr)

node(int = 0, node * = nullptr, node * = nullptr)

list()

在鍊錶的頭部插入三個元素1,2,3:

node(int = 0, node * = nullptr, node * = nullptr)

node(int = 0, node * = nullptr, node * = nullptr)

node(int = 0, node * = nullptr, node * = nullptr)

列印鍊錶

3 2 1

在鍊錶的尾部插入三個元素6,7,8

node(int = 0, node * = nullptr, node * = nullptr)

node(int = 0, node * = nullptr, node * = nullptr)

node(int = 0, node * = nullptr, node * = nullptr)

列印鍊錶

3 2 1 6 7 8

在鍊錶的頭部進行一次刪除

~node()

列印鍊錶

2 1 6 7 8

在鍊錶的尾部進行一次刪除

~node()

列印鍊錶

2 1 6 7

在鍊錶中查詢元素6:

flag = node(int = 0, node * = nullptr, node * = nullptr)

1在鍊錶中的中間進行插入,insert(3,100) :

node(int = 0, node * = nullptr, node * = nullptr)

列印鍊錶

2 1 6 7 100

刪除鍊錶中元素為6的資料

node(int = 0, node * = nullptr, node * = nullptr)

~node()

列印鍊錶

2 1 7 100

~list()

~node()

~node()

~node()

~node()

~node()

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

雙向鍊錶 C 實現

雙向鍊錶在類中的實現 include include includeusing namespace std typedef int datatype struct node node pnext node ppre int data class list list const list l else...