双向链表的C实现.doc_第1页
双向链表的C实现.doc_第2页
双向链表的C实现.doc_第3页
双向链表的C实现.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

双向链表的C实现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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论