释放单链表L中的所有结点(递归算法)

    科技2022-07-10  114

    设计递归算法释放单链表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; }

     

    Processed: 0.017, SQL: 8