C++ 单链表
来源:互联网 发布:网络金融销售 编辑:程序博客网 时间:2024/04/30 09:25
完成单链表的建立,新增,插入,删除,打印
link.h
#ifndef LINK_H#define LINK_H#include<iostream>using namespace std;//目录void printMenu(){ cout<<"Menu"<<endl; cout<<"1.Add Value"<<endl; cout<<"2.Delete Value"<<endl; cout<<"3.Insert Value"<<endl; cout<<"4.Print Value"<<endl; cout<<"5.Quit"<<endl;}class Node{private: Node *next; int value;public: Node(){} Node(const int newValue){value=newValue;next=NULL;} void setNext(Node *newNext){next=newNext;}//设置下一个节点 int getValue()const{return value;}//获得该节点数据 Node *getNext()const{return next;}//获得下一个节点};class Link{private: Node *headNode; int numNode;public: Link(){headNode=NULL;numNode=0;} //查看头结点是否为空 bool headNodeIsEmpty(); //在链表尾部增加新节点 void addNewNode(const int newValue); //插入节点 void insertNode(const int newValue,const int insertNumber); //删除链表节点 void deleteNode(const int delNumber); //打印链表 void printNode();};bool Link::headNodeIsEmpty(){ if(headNode==NULL){ return true; } else{ return false; }}void Link::addNewNode(const int newValue){ Node *newNode=new Node(newValue); if(headNodeIsEmpty()){ headNode=newNode; headNode->setNext(NULL); } else{ newNode=headNode; Node *addNode=new Node(newValue); //获得最后一个节点 while(newNode->getNext()!=NULL){ newNode=newNode->getNext(); } //将addNode添加到链表尾部 newNode->setNext(addNode); //将addNode的下一个节点设置为空 addNode->setNext(NULL); } ++numNode;}void Link::insertNode(const int newValue, const int insertNumber){ Node *insertNode,*preInsertNode; insertNode=new Node(newValue); int currentNumber=1; if(!headNodeIsEmpty()){ //插入节点不为头结点时 if(insertNumber!=1){ preInsertNode=headNode; //将preInsertNode移动至插入点前一个节点 while(currentNumber++<insertNumber-1){ preInsertNode=preInsertNode->getNext(); } //insertNode的下一个节点为preInsertNode的下一个节点 insertNode->setNext(preInsertNode->getNext()); //插入insertNode preInsertNode->setNext(insertNode); } else{ insertNode->setNext(headNode); headNode=insertNode; } ++numNode; }}void Link::deleteNode(const int delNumber){ //delNode 为删除节点,preDelNode为该节点前一个节点, //nextDelNode为该节点下一个节点 Node *delNode,*preDelNode,*nextDelNode; int currentNumber=1; if(!headNodeIsEmpty()){ //删除节点不为头结点 if(delNumber!=1){ preDelNode=headNode; //将preDelNode移动至删除节点的前一个节点 while(currentNumber++<delNumber-1){ preDelNode=preDelNode->getNext(); } cout<<"The Node "<<delNumber<<" has been deleted!"<<endl; //标记需要删除的节点 delNode=preDelNode->getNext(); //将preDelNode的下一个节点设置为删除节点之后的节点 preDelNode->setNext(delNode->getNext()); //删除delNode delete delNode; } //删除节点为头结点 else{ cout<<"The Node "<<delNumber<<" has been deleted!"<<endl; //标记头结点 delNode=headNode; //将第二个节点设置为新头结点 nextDelNode=delNode->getNext(); headNode=nextDelNode; //删除头结点 delete delNode; } numNode--; }}void Link::printNode(){ Node *printNode; int printNumber=0; if(!headNodeIsEmpty()) printNode=headNode; while(printNumber++<numNode){ cout<<"No."<<printNumber<<" "<<printNode->getValue()<<endl; printNode=printNode->getNext(); }}#endif // LINK_H
***************************************************
link.cc
#include"link.h"int main(void){ Link lin; int selectNumber,delNumber,insertNumber; int value; printMenu(); while(cin>>selectNumber&&selectNumber!=5){ switch(selectNumber){ case 1:{ cout<<"Value:"; cin>>value; lin.addNewNode(value); break; } case 2:{ cout<<"Number of Node:"; cin>>delNumber; lin.deleteNode(delNumber); break; } case 3:{ cout<<"Value:"; cin>>value; cout<<"Number of Node:"; cin>>insertNumber; lin.insertNode(value,insertNumber); } case 4:{ lin.printNode(); break; } case 5:{ break; } default:{ cout<<"Wrong Number"<<endl; } } printMenu(); } return 0;}
- 单链表(c++)
- 单链表(c++)
- 单链表C
- C单链表
- c 单链表
- 【c++】单链表
- c单链表
- 【C】单链表
- C 单链表
- C/C++,数据结构单链表实现约瑟夫环
- 单链表的操作(C#)
- 单链表 C程序
- 单链表(C#)实现
- 数据结构(C#)--单链表
- 数据结构(C#)--单链表
- C ++ 动态单链表 代码
- 用C实现单链表
- c 单链表操作
- 【整套共37个视频】【高清】红帽认证工程师RHCE133部分高清视频教程
- SQLSERVER数据库优化技巧
- merge与update区别---->你一定要看!
- SQL SERVER MaintanencePlan 失败 无法解密受保护的 XML 节点“DTS:Password”,错误为 0x8009000B解决
- Joomlart T3 framework Insight & Gavick Pro Template
- C++ 单链表
- JAVA中线程同步方法
- 名站技术分析 — 浅谈tudou.com首页图片延迟加载的效果
- 定时器SetTimer之解析---VC新手
- IDR(刷新帧)与I帧的一些知识点
- Netfilter框架的设计与实现
- C语言实现的Web服务器
- struts-config.xml常用配置详解(转)
- 关于一维数组和二维数组