数据结构基础系列——单链表的实现
来源:互联网 发布:淘宝网修改密码 编辑:程序博客网 时间:2024/05/18 02:35
注重基础才是笔试面试的王道。在准备实习的过程中把数据结构的几个基本点实现了一遍,大家多交流提高~
每一篇都由一个.h和一个.cpp文件组成,实现方便,验证直观。
如果您是像我一样的初学者,建议敲一遍代码并且单步跟踪一遍,对加深理解很好。
第一篇。单链表~
LinkList.h头文件中代码:
#include<iostream>using namespace std;#ifndef LinkList_H#define LinkList_Htemplate <class T>struct Node{T data;Node<T>* next;};template <class T>class LinkList{public:LinkList(T a[],int n);~LinkList();void Insert(int i,T x);T Delete(int i);int Locate(T x);//按值查位数T Get(int i);//按位数返回值void PrintList();private:Node<T>* first;};template <class T>T LinkList<T>::Get(int i){int j = 1;Node<T>* s = first->next;while( s && j<i){s = s->next;j++;}if(!s)throw"位置!";elsereturn s->data;}template <class T>int LinkList<T>::Locate(T x){int j = 1;Node<T>* p = first->next;while( p && p->data != x){p = p->next;j++;}if(p)return j;elsereturn -1;}template <class T>T LinkList<T>::Delete(int i){int j = 0;Node<T>* p = first;while( p && j<i-1){p = p->next;j++;}if(!p || !p->next)throw "位置!";else{Node<T>* s = p->next;T x = s->data;p->next = s->next;delete s;s= NULL;return x;}}template <class T>void LinkList<T>::Insert(int i,T x){int j = 0;Node<T>* p = first;while( p && j<i-1){p = p->next;j++;}if(!p)throw "位置!";else{Node<T>* s = new Node<T>;s->data = x;s->next = p->next;p->next = s;}}template <class T>LinkList<T>::LinkList(T a[],int n){//尾插法first = new Node<T>;Node<T>* r = first;for(int j=0;j<n;j++){Node<T>* s = new Node<T>;s->data = a[j];r->next = s;r = s;}r->next = NULL;//头插法/*first = new Node<T>;first->next = NULL;for(int i = 0;i<n;i++){Node<T>* s = new Node<T>;s->data = a[i];s->next = first->next;first->next = s;}*/}template <class T>LinkList<T>::~LinkList(){Node<T> *p,*q;p = first;while(p){q = p;p = p->next;delete q;q = NULL;}}template <class T>void LinkList<T>::PrintList(){Node<T> *p;p = first->next;while(p){cout<<p->data<<" ";p = p->next;}}#endif
.cpp中验证代码为
#include "stdafx.h"#include "LinkList.h"int _tmain(int argc, _TCHAR* argv[]){int r[] = {100,80,60,40,20};LinkList<int> a(r,5);try{a.Insert(6,10);//在第几位插入值为}catch(char *s){cout<<s<<endl;}try{int x = a.Delete(6);//删除第几位cout<<x<<endl;}catch(char *s){cout<<s<<endl;}int y = a.Locate(10);//返回值为*的所在位置cout<<y<<endl;try{int z = a.Get(2);//第n位上的值cout<<z<<endl;}catch(char* s){cout<<s<<endl;}a.PrintList();//打印出来return 0;}
完~
- 数据结构基础系列——单链表的实现
- 数据结构基础系列——链栈的实现
- 数据结构C语言实现系列——单链表
- 数据结构基础2_单链表的实现
- 数据结构基础——循环队列的C++实现
- 数据结构基础——栈的C++实现
- 数据结构—单链表的实现
- 重学数据结构系列之——线性表基础
- 重学数据结构系列之——二叉树基础
- String系列——基础实现
- 数据结构系列之链表——单链表的建立
- 基础数据结构——单链表
- 数据结构C语言实现系列[3]——关于栈的一些习题
- 数据结构C语言实现系列[1]——线性表
- 数据结构C语言实现系列[2]——栈
- 数据结构C语言实现系列[4]——队列
- 数据结构C语言实现系列[5]——串
- 数据结构C语言实现系列[6]——堆
- 文件上传与下载————>struts
- Java与Flex学习笔记(5)----Flex与Java通信之HttpService方式
- Java java.util.date 与 java.sql.date 区别和转换
- 开机速度调整命令大全 LOGO
- cocos2d-x游戏实例(28)-简易动作游戏(6)
- 数据结构基础系列——单链表的实现
- 链接服务器的 OLE DB 访问接口 "SQLNCLI" 无法启动分布式事务 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务
- 数据泵expdp
- Exchange 2003 升级到Exchange 2010 之Exchange 2010 SP2安装!
- div垂直居中的N种方法
- Linux修改文件及文件夹权限
- collaborative filtering (CF):协同过滤
- Block Formatting Contexts
- 数据结构基本概念