欢迎来到天天文库
浏览记录
ID:38120939
大小:21.46 KB
页数:6页
时间:2019-06-06
《C++版本的单链表的操作》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#includeusingnamespacestd;//链表结点structLinkNode{intval;LinkNode*next;LinkNode():next(NULL){}};//创建链表结点LinkNode*CreateLinkNode(intvalue){LinkNode*newNode=newLinkNode();if(newNode==NULL){returnNULL;}newNode->val=value;newNode->next=NULL;returnnewNode;}
2、//判断链表是否为空boolIsEmpty(LinkNode*list){returnlist->next==NULL;}//判断是否是最后一个结点boolIsLast(LinkNode*position){returnposition->next==NULL;}//在尾部插入结点voidInsertTailNode(LinkNode*list,LinkNode*newNode){if(list==NULL){list=newNode;}else{LinkNode*tmpNode=list;while(tmpNo
3、de->next!=NULL){tmpNode=tmpNode->next;}tmpNode->next=newNode;//最后一个的下一个结点指向新结点}}//在链表中找到一个结点LinkNode*Find(intvalue,LinkNode*list){if(list==NULL){returnNULL;}LinkNode*tmpNode=list->next;while(tmpNode!=NULL&&tmpNode->val!=value){tmpNode=tmpNode->next;}returntmp
4、Node;}//找到某一元素的前驱结点LinkNode*FindPrevious(intvalue,LinkNode*list){if(list==NULL){return;}LinkNode*tmpNode=list;while(tmpNode->next!=NULL&&tmpNode->next->val!=value){tmpNode=tmpNode->next;}returntmpNode;}//删除某个结点voidLinkNode(intvalue,LinkNode*list){if(list==NUL
5、L){return;}LinkNode*ToBeDelete=NULL;LinkNode*tmpNode=list;while(tmpNode->next!=NULL&&tmpNode->next->val!=value){tmpNode=tmpNode->next;}if(tmpNode->next!=NULL){ToBeDelete=tmpNode->next;tmpNode->next=ToBeDelete->next;deleteToBeDelete;ToBeDelete=NULL;}return;}//
6、将一个元素插入到知识的结点之后,元素的值为ValuevoidInsertNode(intvalue,LinkNode*list,LinkNode*pToBeInsertNode){if(list==NULL
7、
8、pToBeInsertNode==NULL){return;}LinkNode*pNewNode=newListNode();if(pNewNode==NULL){return;}pNewNode->val=value;pNewNode->next=pToBeInsertNode->next;pToBeIn
9、sertNode->next=pNewNode;}//删除整个链表voidDelete(LinkNode*list){if(list==NULL){return;}LinkNode*pNode=list->next;LinkNode*tmpNode=NULL;while(pNode!=NULL){tmpNode=pNode->next;deletepNode;pNode=tmpNode;}}//逆序打印链表voidprintListReversingly(LinkNode*list){stack10、*>nodes;LinkNode*tmpNode=list->next;while(tmpNode!=NULL){nodes.push(tmpNode);tmpNode=tmpNode->next;}while(!node.empty()){LinkNode*tmpNode=node.top();cout<val<<"";nodes.pop();}}/
10、*>nodes;LinkNode*tmpNode=list->next;while(tmpNode!=NULL){nodes.push(tmpNode);tmpNode=tmpNode->next;}while(!node.empty()){LinkNode*tmpNode=node.top();cout<val<<"";nodes.pop();}}/
此文档下载收益归作者所有