1. Menghapus Simpul di Awal
Menghapus simpul diawal dilakukan dengan cara menampung simpul awal pada pointer temp, kemudian mengarahkan awal_ptr ke simpul selanjutnya. Kemudian simpul yang ditampung dalam pointer temp dihapus.
node *temp;
temp = awal_ptr;
awal_ptr = awal_ptr->next;
delete temp;
2. Menghapus Simpul di Tengah
Menghapus tengah sebuah simpul adalah menghilangkan simpul dari deret linked list.
Misalkan kita akan menghapus simpul pada posisi 3.

Tempatkan pointer bantu pada posisi sebelum simpul yang akan dihapus.

Tempatkan pointer hapus sesuai dengan field next pada bantu.

Sambungkan field next pada bantu dengan field next pada hapus.

Langkah terakhir delete simpul hapus.

Program:
if(awal_ptr != NULL)
{
cout<<" Akan dihapus pada data ke : "; cin>>posisi_hapus;
banyakdata=1;
bantu=awal_ptr;
while(bantu->next != NULL)
{
bantu=bantu->next;
banyakdata++;
}
if((posisi_hapus<1)||(posisi_hapus>banyakdata))
{
cout<<"Belum ada data !! masukkan Data dula aja...\n";
}
else
{
bantu=awal_ptr;
poshapus=1;
while(poshapus<(posisi_hapus-1))
{
bantu=bantu->next;
poshapus++;
}
hapus=bantu->next;
bantu->next=hapus->next;
delete hapus;
}
}
else cout<<"Data Masih kosong, tidak bisa hapus data dari tengah! ";
getch();
}
3. Menghapus simpul di Akhir
Untuk menghapus simpul diakhir perlu kita uji apakah senarai masih kosong atau tidak, jika kosong tampilkan pesan bahwa list masih kosong. Jika tidak kosong perlu diuji apakah jumlah simpul dalam senarai hanya satu yang ditandai dengan medan penyambung yang bernilai null. Jika simpul lebih dari saru maka dibaca semua simpul sampai simpul terakhir yaitu medan penyambung bernilai null.
node *temp1, *temp2;
if (awal_ptr == NULL)
cout << "List kosong!" << endl;
else
{
temp1 = awal_ptr;
if (temp1->next == NULL)
{
delete temp1;
awal_ptr = NULL;
}
else
{
while (temp1->next != NULL)
{
temp2 = temp1;
temp1 = temp1->next;
}
delete temp1;
temp2->next = NULL;
}
}
Sumber
Mata kuliah Struktur Data. STMIK EL Rahma Yogyakarta.
Disusun oleh Eko Riswanto