c++关于链表的操作
来源:互联网 发布:概率矩阵分解算法 编辑:程序博客网 时间:2024/05/17 06:40
网上搜到的链表操作大都是c的,由于最近要准备一个c++的面试,遂写了一些c++链表的基本操作,不多说直接上代码。
#include <iostream>using namespace std;class MyNode{public:MyNode(); //默认构造函数MyNode *Create(); //创建链表void CoutAll(MyNode *Head); //遍历输出链表void SetValue(int value); //设置成员变量m_Value的值int GetLength(MyNode *Head); //得到链表长度void DeleteNode(MyNode **Head,int n); //删除链表中第n个元素void DeleteNode2(MyNode **Head,int n); //删除链表中值为n的元素void InsertNode(MyNode **Head,MyNode *value,int n); //向链表中插入节点void AddToTail(MyNode *Head,MyNode *value); //链表末尾添加节点private:int m_Value;MyNode *pNext;};//默认构造函数MyNode::MyNode(){m_Value=0;pNext=NULL;}//创建链表MyNode *MyNode::Create(){int value;MyNode *pHead=NULL;MyNode *pTail=NULL;while(1){cout<<"please input node"<<endl;cin>>value;if(value==-1){break;}MyNode *node=new MyNode();node->m_Value=value;if(pHead!=NULL&&pTail!=NULL){pTail->pNext=node;pTail=node;}else{pHead=pTail=node;}}return pHead;}//设置成员变量m_Value的值void MyNode::SetValue(int value){m_Value=value;}//遍历输出链表void MyNode::CoutAll(MyNode *Head){MyNode *index=Head;if(index==NULL){cout<<"链表中没有数据"<<endl;}while(index!=NULL){cout<<index->m_Value<<endl;index=index->pNext;}}//得到链表长度int MyNode::GetLength(MyNode *Head){MyNode *index=Head;int length=0;while(index!=NULL){++length;index=index->pNext;}return length;}//删除链表中第n个元素void MyNode::DeleteNode(MyNode **Head,int n){MyNode *Temp=NULL;int length=GetLength(*Head);if(n>length||n<1){cout<<"n值范围错误"<<endl;}int count=0;if(n==1){Temp=*Head;*Head=(*Head)->pNext;delete Temp;Temp=NULL;}MyNode *index=*Head;if(n>1&&n<=length){while(index!=NULL){++count;if(count==(n-1)){Temp=index->pNext;index->pNext=index->pNext->pNext;delete Temp;Temp=NULL;}index=index->pNext;}}}//删除链表中值为n的元素void MyNode::DeleteNode2(MyNode **Head,int n){MyNode *Temp=NULL;while((*Head)!=NULL&&(*Head)->m_Value==n){Temp=*Head;*Head=(*Head)->pNext;delete Temp;Temp=NULL;}MyNode *index=*Head;while(index!=NULL){if(index->pNext==NULL){break;}else if(index->pNext->m_Value==n){Temp=index->pNext;index->pNext=index->pNext->pNext;delete Temp;Temp=NULL;}else{index=index->pNext;}}}//向链表中插入节点void MyNode::InsertNode(MyNode **Head,MyNode *value,int n){int length=GetLength(*Head);int count=0;MyNode *index=*Head;if(n<1||n>length){cout<<"n取值范围错误"<<endl;}if(n==1){value->pNext=(*Head);(*Head)=value;}if(n>1&&n<=length){while(index!=NULL){++count;if(count==(n-1)){value->pNext=index->pNext;index->pNext=value;break;}index=index->pNext;}}}void MyNode::AddToTail(MyNode *Head,MyNode *value){MyNode *index=Head;while(index->pNext!=NULL){index=index->pNext;}index->pNext=value;}int main(){MyNode *Head=new MyNode();Head=Head->Create();Head->CoutAll(Head);//Head->DeleteNode(&Head,9);MyNode *node=new MyNode();node->SetValue(20);//Head->InsertNode(&Head,node,9);Head->AddToTail(Head,node);Head->CoutAll(Head);return 0;}
0 0
- 关于c语言链表的操作
- C 关于链表的一些操作
- C语言中关于链表的一些操作
- C语言关于线性表的相关操作
- 关于链表的创建和对链表的操作--C语言
- 关于C语言的指针、链表的原理和各类操作
- C语言---关于链表的各项操作总结-----单向链表
- 尹成老师,关于链表的一些操作(C)
- 【c】链表的操作!!!
- 链表的操作(C)
- c/c++/mfc/Linux c 关于文件的操作
- 关于C中文件操作的问题
- 关于C里的自增操作
- 关于c 的逗号操作符
- 关于C语言指针的不安全操作
- 关于C语言文件的操作
- 关于C语言的位移操作
- 关于C语言文件操作的小结
- openssh-server 拒绝密码
- 机器视觉圈里的那些屁事
- 笔试_dpkj_20141115
- ArcGIS数据生产与精细化制图之中国年降水量分布图的制作
- sqliteopenhelper用法
- c++关于链表的操作
- 高仿网易评论列表效果之数据准备
- iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别
- 纳什演讲词
- swig 指令文件写法
- Eclipse中添加Android系统jar包
- 软件工程之机房收费系统文档总结
- 自然数之和
- Android 5.0 Lollipop SDK下载地址