- 论坛徽章:
- 0
|
- 链表结点的结构:
- typedef struct LNode{
- ElemType data;
- struct LNode *nexe;
- }LNode, *PLNODE;
- 第一种方法(通常使用该方法):
- typedef struct LNode{
- ElemType data;
- struct LNode *next;
- }LNode, *PLNODE;
- void ListDelete(PLNODE &Header, ElemType e){
- PLNODE p, q;
- if (Header ==NULL)
- {
- return;
- }
- if (Header->;data == e)
- {
- p = Header;
- Header = p->;next;
- free(p);
- }
- q = Header;
- while (q != NULL)
- {
- p = q->;next;
- if (p->;data == e)
- {
- q->;next = p->;next;
- free(p);
- }
- else
- {
- q = p;
- }
- }
- }
- 第二种方法(容易使人糊涂):
- void ListDelete(PLNODE &Header, ElemType e){
- PLNODE *p;
- PLNODE q;
- p = &Header;
- while (*p)
- {
- if (*p == NULL)
- {
- return;
- }
- if ((*p)->;data == e)
- {
- q = *p;
- *p = (*p)->;next;
- free(q);
- }
- else
- p = &(*p)->;next;
- }
- }
复制代码
第二种方法较第一种方法有两个优点(暂时只知道这个):
1、不需要特别的考虑头指针的问题;
2、不需要同时移动两个指针,只移动一个就够了。 |
|