题目:递归来实现删除单链表中一个值为x的节点的函数
void del(LinkList &L,ElemType x)
{ Node *t;
if (L==NULL) return;
if (L->data==x)
{
t=L;
L=L->next;// L就是前一个节点的next域
free(t);
return;
}
else del(L->next,x);
}
关键点:什么引用?
引用是给同一个内存对象起的别名,即引用和原变量名表示同一个内存地址
#include <stdio.h>
#include<stdlib.h>
typedef int ElemType ;
typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;// LinkList是struct LNode的指针类型
int main ()
{
LinkList pp;
LNode L,P;
pp = &L;// pp是头指针,存储L的首地址
L.data = 1;
L.next = &P;
P.data = 2;
P.next = NULL;
LinkList &pa = pp; //创建pa作为pp的引用
printf("pp%d\n", pp);
printf("pa%d\n", pa);
printf("引用之后pp与pa存储的地址值完全相同,即指向同一结点\n");
printf("pp->next\t%d\n", pp->next);
printf("pa->next\t%d\n", pa->next);
printf("L.next\t\t%d\n",L.next);
printf("P的首地址\t%d", &P);
}
数据结构