//不带头结点的链表数据删除,用递归。
note:
1:,创建链表时函数参数要引用。
2,创建链表时,不带头结点也要给第一个结点L分匹配空间!!对b站里吸血鬼代码的补充,她在演示时并未创建第一个节点的空间,虽然运行成功,不过当链表第一个节点就是要删除的结点时就会出错。
3,对链表操作时要判空,如创建链表或者deletex函数时。
#include<iostream>
using namespace std;
typedef struct lnode {
int data;
struct lnode* next;
}lnode;
int a[4] = { 3,1,3,4 };
int n = 4;
void buildlist(lnode* &L)//创建链表要用引用&
{
L = (lnode*)malloc(sizeof(lnode));//不带头结点,第一个结点也创立空间呀!!
if (L == NULL)return;//判断空间是否分配成功
lnode* s, * r = L;
r->data = a[0];
if (n == 1) r->next = NULL;
else {
for (int i = 1; i < n; i++)
{
s = (lnode*)malloc(sizeof(lnode));
s->data = a[i];
r->next = s;
r = r->next;
}
r