C 實現雙向鍊錶

2021-07-29 13:15:02 字數 1683 閱讀 8116

struct dlistnode //節點的建立

};class dlist

dlist(const dlist& l)

:_head(null),_tail(null)

else}}

//dlist& operator=(const dlist& l) //傳統寫法

//// _tail->next = null;

// }

// return *this;

//}//dlist& operator=(const dlist& l) //現**法

//// return *this;

//} dlist& operator=(const dlist l) // 再優化,傳值操作

return

*this;

}~dlist()

void pushback(datatype x)

else

return;

}void popback()

else

if (_head == _tail)

else

}void pushpront(datatype x)

else

return;

}void poppront()

else

if (_head == _tail)

else

}void insert(node* pos,datatype x)

else

if (pos == _tail)

else

return;

}node* find(datatype x)

return cur;

}void erase(node* pos)

else

if (pos == _tail)

else

pos->prev->next = pos->next;

pos->next->prev = pos->prev;

delete pos;}}

//void reverse() //對稱位置值交換

//// return;

//}void reverse() //通過交換每乙個節點上的兩個指標來實現逆置

swap(_head, _tail);

}void clear()

_head = _tail =

null;

}void display()

cout << endl;

}private:

node* _head;

node* _tail;

};void test1()

void test2()

void test3()

int main()

雙向鍊錶(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...