鏈表——不帶頭結點

創建不帶頭結點單鏈表

設計遞歸算法,刪除單鏈表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);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章