1. Menghapus Simpul di Awal
Menghapus node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penggunakan suatu pointer lain yang digunakan untuk menunjuk node yang akan dihapus, misalnya pointer hapus. Kemudian head harus ditunjukkan ke node sesudahnya terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan menjadi head baru. Setelah itu barulah kemudian menghapus pointer hapus dengan menggunakan perintah delete. Jika head masih NULL maka berarti data masih kosong!

Fungsi menghapus simpul didepan
void hapus_depan()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=head;
head=hapus->next;
head->prev=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
2. Menghapus Simpul di Belakang
Menghapus simpul di belakang dibutuhkan satu buah pointer bantuan, misal pointer hapus, tidak perlu melakukan perulangan untuk mencari node terakhir seperti pada single linked list. Pointer hapus hanya perlu menunjuk pada pointer tail saja. Sebelum penghapusan node, tail harus dipindahkan pada node sebelumnya. Selanjutnya pointer next dari tail diberi nilai NULL. Kemudian langkah terakhir simpul hapus di-delete

Fungsi menghapus simpul dibelakang
void hapus_belakang()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=tail;
tail=hapus->prev;
tail->next=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
Sumber
Mata kuliah Struktur Data. STMIK EL Rahma Yogyakarta.
Disusun oleh Eko Riswanto