设计递归算法释放单链表L中的所有结点
对应的递归模型如下:
f(L)=不作任何事情 当L=NULL时
f(L)=f(L->next); 其他情况
对应的递归算法如下:
void del(Node *&L){
if (L!=NULL) {
del(L->next);
free(L);
}
}
对应的源代码如下:
#include<iostream>
using namespace std;
//单链表的结构体
typedef struct Node {
int data;
struct Node *next;
}Node;
//删除所有节点的函数
void del(Node *&L){
if (L!=NULL) {
del(L->next);
free(L);
}
}
//不带头结点的单链表的创建(头插法)
void LinkCreate(Node *&L) {
int a=0;
cout << "请输入数据" << endl;
cin >> a;
while (a!=9999) {
Node *p;
p = (Node*)malloc(sizeof(Node));
p->data = a;
p->next = L;
L = p;
cin >> a;
}
}
//单链表的输出,看是否创建成功
void display(Node *L){
cout << "表中数据输出:" << endl;
while (L !=NULL) {
cout << L->data << " ";
L = L->next;
}
cout << endl;
}
int main(){
Node *L=NULL;
LinkCreate(L);
display(L);
del(L);
system("pause");
return 0;
}