-
Deleting lnked list
Hi
I am trying to write simple linkedlist application. But i take error while trying to delete it
Code:
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct _Listmember
{
int x;
_Listmember *pNext;
}Listmember;
Listmember *head = NULL;
void Add(int x)
{
Listmember *List = (Listmember *) malloc(sizeof(Listmember));
List->x = x;
List->pNext = head;
head = List;
};
void Show()
{
Listmember* pmember;
for(pmember = head; pmember != NULL; pmember = pmember->pNext)
cout << pmember->x << "\n";
};
void Delete()
{
Listmember* pmember;
for(pmember = head; pmember != NULL; pmember = pmember->pNext)
free(pmember);
}
int _tmain(int argc, _TCHAR* argv[])
{
Add(1);
Add(2);
Add(3);
Show();
Delete();
return 0;
}
Why is that code wrong?
How must i delete the linkedlist?
Thanks
-
if you are writing on C++ - you should use new/delete
If you on C - do not use <iostream> - use stdio.h with printf
Code:
for(pmember = head; pmember != NULL; pmember = pmember->pNext)
free(pmember);
You do pmember->pNext after free - it is not safe
Do something like
Code:
while(head)
{
Listmember *temp = head->next;
free(head);
head = temp;
}
-