Tip:下面代碼是通過結構體中某個值去實現的判斷是實現增刪的,具體依靠個人業務不同
void insert_element(struct Node *header,int keywordVal,int val){ struct Node *temp=header; struct Node *mPrevious=NULL; while (temp!=NULL) { if (temp->val==keywordVal) { //先連后斷 struct Node *pNewNode=(struct Node *)malloc(sizeof(struct Node)); pNewNode->val=val; pNewNode->pNext=temp->pNext; if (mPrevious!=NULL) { mPrevious->pNext=pNewNode; pNewNode->pPrevious=mPrevious; } } temp=temp->pNext; mPrevious=temp; } } struct Node * delete_element(struct Node *header,int keywordVal){ struct Node *mCurren=header; struct Node *mPrivious=NULL; struct Node *mNext=NULL; //刪除第一個節點:只需要將head指向第二個節點 if (header->val==keywordVal) { return pHeader->pNext; } while (mCurren!=NULL) { //刪除最后一個節點,只需要將指向最后一個節點的指針(引用)指向NULL(null) if (mCurren->pNext==NULL&&mCurren->val==keywordVal) { mPrivious->pNext=NULL; } //刪除中間節點,只要將需要將指向需要刪除節點的指針(引用)指向需要刪除節點的下一個節點 else if(mCurren->val==keywordVal) { mNext=mCurren->pNext; mPrivious->pNext=mNext; mNext->pPrevious=mPrivious; } mPrivious=mCurren; mCurren=mCurren->pNext; } return header; }
運行如下代碼:
結果:
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。