C++ 单链表基本操作
来源:互联网 发布:怎么快速提升淘宝星级 编辑:程序博客网 时间:2024/04/25 23:27
一:目的
用C++实现单链表的基本操作;
一:实现
1. 首先定义单链表的结构和类,书写在LinkList.h中
# include <iostream># include <string>using namespace std;//定义节点的valuestruct Info{string name;//姓名int id;//学号Info(string info_name, int info_id):name(info_name),id(info_id){}};//定义节点struct Node{Info val;//节点的值Node * p_next;//指向下一个节点Node(Info input):val(input),p_next(NULL){};};class LinkList{public:LinkList(); //构造函数~LinkList(); //析构函数void InsertHead(Info val);//从头节点插入void Insert(Info val, int pos);//插入void Remove(Info val);//删除节点void Reverse();//翻转链表int Find(Info val);//查找位置int Get_Length();//获取长度void Print();//打印链表private:Node *head;//头节点int length;//链表长度};2. 在LinkList中进行实现
# include "LinkList.h"//构造函数,进行初始化LinkList::LinkList(){head = NULL;//将头结点指向空指针length = 0;}//析构函数,进行释放LinkList::~LinkList(){Node * p;for(int i = 0;i<length; i ++){p = head;//将指针指向头结点head = head->p_next;//将头结点指针指向下一个delete p;}}//获取长度int LinkList::Get_Length(){return length;}//打印链表void LinkList::Print(){if(head == NULL){cout << "空指针" << endl;return;}Node *p = head;while(p!=NULL){cout << "Id:" << p->val.id << ";Name" << p->val.name << endl;p = p->p_next;}}//从头部插入节点void LinkList::InsertHead(Info val){Node *node = new Node(val); //新建节点node->p_next = head;head = node;length++;}//插入void LinkList::Insert(Info val, int pos){if(pos<0 || pos>length){cout<<"插入位置不能小于0;不能大于链表长度"<<endl; return; }int index = 1;Node * temp = new Node(val);Node * p = head;while(index < pos && p!=NULL){p = p->p_next;index++;}if(p == NULL){cout<<"插入失败"<<endl;return;}temp->p_next = p->p_next;p->p_next = temp;length++;}//查找节点int LinkList::Find(Info val){Node * p = head;int pos = 0;while(p!=NULL){if(p->val.id == val.id && p->val.name == val.name)return pos;p=p->p_next;pos++;}return -1;}//移除节点void LinkList::Remove(Info val){Node * p = head;if(p->val.id == val.id && p->val.name == val.name){head = p->p_next;delete p;length--;return;}Node *p_pre = p;p=p->p_next;while(p!=NULL){if(p->val.id == val.id && p->val.name == val.name){p_pre->p_next = p->p_next;delete p;length--;return;}p_pre=p_pre->p_next;p=p->p_next;}}//翻转链表void LinkList :: Reverse(){if(head == NULL)return;Node *p = head;Node *p_next = p->p_next;Node * temp = NULL;while(p_next!=NULL){temp = p_next->p_next;p_next->p_next = p;p= p_next;p_next = temp;}head->p_next = NULL;head = p;}3. 简单的测试
LinkList linklist;Info val1("赵一",1), val2("王二",2),val3("张三",3),val4("李四",4);Info val5("赵五",5), val6("王六",6),val7("张七",7),val8("李八",8);linklist.InsertHead(val1);linklist.InsertHead(val2);linklist.InsertHead(val3);linklist.InsertHead(val4);linklist.InsertHead(val5);linklist.InsertHead(val6);linklist.InsertHead(val7);linklist.InsertHead(val8);int pos = linklist.Find(val3);linklist.Print();linklist.Remove(val3);cout<<"==========================="<<endl;linklist.Print();linklist.Reverse();cout<<"==========================="<<endl;linklist.Print();system("pause");
阅读全文
0 0
- C++-----单链表基本操作
- 【C++】单链表的基本操作
- C语言单链表基本操作
- 单链表基本操作c语实现
- c语言单链表的基本操作(代码)
- 数据结构 - C语言版 - 单链表 所有基本操作
- C实现单链表的基本操作笔记
- C语言 单链表的基本操作
- c语言 之 单链表 的 基本操作
- C语言实现单链表的基本操作
- 【C++/数据结构】单链表的基本操作
- c单链表基本操作,本人已祥测
- C语言单链表的基本操作
- 单链表的基本操作c语言实现
- C/C++ 知识回顾 单链表基本操作
- C语言实现单链表的基本操作
- 【c语言】单链表的基本操作
- 单链表的基本操作C语言实现
- iOS——中使用多个Target去管理环境版本
- C# NPOI MO工具的应用(excel,ppt,doc)
- react 随手记
- node.js全局对象和全局变量
- 【重磅发布】《2017开发者调查报告》代码谱写传奇,深度揭秘中国开发者现状
- C++ 单链表基本操作
- 自学Android开发之从虚拟机中导出已安装的Android模拟器
- AS 修改默认继承AppCompatActivity
- 121. Best Time to Buy and Sell Stock
- Yarn集群配置
- 图解排序算法(四)之归并排序
- (大型网站之Nginx)图解正向代理、反向代理、透明代理
- 论文阅读《Network in Network》
- Linux下Jdk1.8的安装与环境变量配置教程