創建不帶頭結點單鏈表
設計遞歸算法,刪除單鏈表L中所有值爲x的結點
#include<bits/stdc++.h>
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList;
//不帶頭結點創建單鏈表
LinkList CreateList_HeadInsert(LinkList &L, int n)
{
L = (LinkList)malloc(sizeof(LNode));
L = NULL;
int number;
LNode *p;
for(int i = 0;i<n;i++)
{
cin>>number;
p = new LNode;
p -> data = number;
p -> next = L;
L = p;
}
return L;
}
void List_Print(LinkList &L)
{
cout<<"The list is : ";
LNode *p;
p = L;
while(p!= NULL)
{
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}
//遞歸刪除不帶頭結點 單鏈表L 值爲x結點
void Delete_x(LinkList &L, int x)
{
if(L == NULL)
return ;
if(L->data == x)
{
LNode *p = L;
L= L->next;
free(p);
Delete_x(L,x);
}
if(L->data != x)
{
Delete_x(L->next,x);
}
}
int main()
{
LinkList L1;
int n;
cin>>n;
CreateList_HeadInsert(L1, n);
List_Print(L1);
Delete_x(L1, 2);
List_Print(L1);
}