[存疑]单链表删除结点后不发生断链

问题先放到这里待解决

#include<stdlib.h>
#include <algorithm>
#include<vector>
#include<set>
#include <iostream>
using namespace std;
typedef struct LNode
{
    int data;
    struct LNode* next;
}LNode,*LinkList;

LinkList createList()
{
    int x;
    LinkList l = (LinkList)malloc(sizeof(LNode)); //head
    LNode* s;
    l->next = NULL;
    cin >> x;
    do
    {
        s = (LNode*)malloc(sizeof(LNode));
        s->data = x;
        s->next = l->next;
        l->next = s;
        cout << "add new data " << s->data << endl;
        cin >> x;
    } while (x > 0);
    return l;
}
void dis(LinkList l)
{
    l = l->next;
    while (l != NULL)
    {
        cout << l->data << " ";
        l = l->next;
    }
    cout << endl;
}
void delectX(LinkList &l, int x) //使用递归
{
    //cout << "delect" << endl;
    LNode* s;
    if (l == NULL) return;
    if (l->data == x) {
        s = l;
        l = l->next;  //5 4 1 3 2 1 ,删除第一个1后,4与3之间没有链接了应该会断链啊?
        free(s);
        delectX(l, x);
    }
    else
        delectX(l->next, x);
}
int main()
{
        LinkList l=createList();
        dis(l);
        delectX(l, 1);
        dis(l);
        return 0;
}

 

posted @ 2020-07-07 21:00  北陌南旬  阅读(252)  评论(0)    收藏  举报