連結串列面試題(三)---當前結點前插入一個資料x

gogogo_sky發表於2017-05-16

一、結構體定義

typedef struct ListNode//定義結點
{
    DataType data;
    struct ListNode* next;
}ListNode,*PListNode;

typedef struct  PList//定義一個成員是指向結點的指標的結構體
{
    PListNode PHead;
}PList,*PList;

二、程式碼實現:
思路:在當前結點之前插入一個結點,其實就是在當前結點之後插入一個結點,然後將插入的結點和當前結點的值作交換;即可達到目的

//3.當前結點前插入一個資料
void InsretFrontNode(PListNode pos,DataType x)
{
    PListNode NewNode=NULL;
    PListNode tmp=NULL;
    assert(pos);
    NewNode=BuyNode(pos->data);//以當前結點值建立新結點;
    pos->data=x;//改變當前結點值為插入值
    tmp=pos->next;//記錄當前結點的的下一個結點的指標
    pos->next=NewNode;//將新結點連結在當前結點後面
    NewNode->next=tmp;//當新結點後面連結tmp結點
}

相關文章