雙向鏈表的C實現(xiàn).doc_第1頁
雙向鏈表的C實現(xiàn).doc_第2頁
雙向鏈表的C實現(xiàn).doc_第3頁
雙向鏈表的C實現(xiàn).doc_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

雙向鏈表的C實現(xiàn)struct Node void* pUserData;struct Node* pNext;struct Node* pPrev; _Node;struct TABLE struct Node* pHead;struct Node* pTail; _TABLE;struct POSITION struct TABLE* pTable; struct Node* pNode; _POSITION;struct TABLE* CreateTable(void);void FreeTable(struct TABLE*);void AddTail(struct TABLE*,void* pUserData);void InsertAt(struct POSITION*,void*);void RemoveAt(struct POSITION*);void* GetAt(struct POSITION*);void* GetNext(struct POSITION*);void* GetPrev(struct POSITION*);struct POSITION GetHeadPosition(struct TABLE*);struct POSITION GetTailPosition(struct TABLE*);struct POSITION GetPosition(struct TABLE*,unsigned int);int GetCount(struct TABLE*);struct TABLE* CreateTable()struct TABLE* pTable = (struct TABLE*)malloc(sizeof(_TABLE);if(pTable = NULL)return NULL;pTable- pHead = NULL;pTable- pTail = NULL;return pTable;void FreeTable(struct TABLE* pTable)struct Node* pNode;while(pTable- pHead)pNode = pTable- pHead;pTable- pHead = pTable- pHead- pNext;free(pNode);free(pTable);void AddTail(struct TABLE* pTable,void* pUserData)struct Node* pNode;pNode = (struct Node*)malloc(sizeof(_Node);if(pNode = NULL)return;pNode- pUserData = pUserData;pNode- pNext = NULL;if(pTable- pHead=NULL & pTable- pTail=NULL)pNode- pPrev = NULL;pTable- pHead = pNode;elsepNode- pPrev = pTable- pTail;pTable- pTail- pNext = pNode;pTable- pTail = pNode;void RemoveAt(struct POSITION* pos)if(pos- pNode = NULL)errcode|=1 pTable- pHead = NULL & pos- pTable- pTail = NULL)return;if(pos- pNode = pos- pTable- pHead)if(pos- pNode = pos- pTable- pTail)pos- pTable- pHead = NULL;pos- pTable- pTail = NULL;elsepos- pTable- pHead = pos- pNode- pNext;pos- pTable- pHead- pPrev = NULL;elseif(pos- pNode = pos- pTable- pTail)pos- pTable- pTail = pos- pNode- pPrev;pos- pTable- pTail- pNext = NULL;elsepos- pNode- pPrev- pNext = pos- pNode- pNext;pos- pNode- pNext- pPrev = pos- pNode- pPrev;free(pos- pNode);void InsertAt(struct POSITION* pos,void* pUserData)struct Node* pNode;if(pos- pNode = NULL)return;pNode = (struct Node*)malloc(sizeof(_Node);if(pNode = NULL)return;pNode- pUserData = pUserData;if(pos- pNode = pos- pTable- pHead)pNode- pPrev = NULL;pNode- pNext = pos- pTable- pHead;pos- pTable- pHead- pPrev = pNode;pos- pTable- pHead = pNode;elsepos- pNode- pPrev- pNext = pNode;pNode- pPrev = pos- pNode- pPrev;pNode- pNext = pos- pNode;pos- pNode- pPrev = pNode;void* GetAt(struct POSITION* pos)if(pos- pNode = NULL)return NULL;return pos- pNode- pUserData;void* GetNext(struct POSITION* pos)struct Node* pNode;if(pos- pNode = NULL) return NULL;pNode = pos- pNode;pos- pNode = pos- pNode- pNext;return pNode- pUserData;void* GetPrev(struct POSITION* pos)struct Node* pNode;if(pos- pNode = NULL) return NULL;pNode = pos- pNode;pos- pNode = pos- pNode- pPrev;return pNode- pUserData;struct POSITION GetHeadPosition(struct TABLE* pTable)struct POSITION pos;pos.pTable = pTable;pos.pNode = pTable- pHead;return pos;struct POSITION GetTailPosition(struct TABLE* pTable)struct POSITION pos;pos.pTable = pTable;pos.pNode = pTable- pTail;return pos;struct POSITION GetPosition(struct TABLE* pTable,unsigned int index)struct POSITION pos;pos.pTable = pTable;pos.pNode = pTable- pHead;while(index-)if(pos.pNode = NULL)break;pos.pNode = p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論