- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++ 笔记 第十五天 2007 年 4 月 11 日
1、在头文件中
#ifndef _ACCOUNT_ //预编译选项,表示如果没有定义这个宏#define _ACCOUNT_ //创建以_ACCOUNT_命名的宏
并声明类
#endif
2、链表
解决数组必须连续存储的问题
链表是可以不连续的,通过每个节点的指针连接
节点中一部分空间用于存放数据,另一部分是一个指向下一个节点的指针
每个节点都是一个结构
struct node{
int data; //存储数据
node* next; //指向下一个节点的指针,是自己这个结构的类型
}
尾节点 --- 链表中的最后一个节点 --- 指针指向 NULL
头节点 --- 要访问链表中的元素,必须要知道头节点的位置
把地址放在一个指针中 --- 头指针指向头节点,只是一个指针 --- 是
必须存在的元素
对链表的常见操作 --- 增删改查
链表与数组的区别
数组:空间必须连续,数组是定长的,插入和删除需要遍历整个数组,效率不高。取元素可直接使用下标,访问方便
链表:空间在内存中不必连续,通过指针连接
链表是不定长的,可以随时添加新节点,通过指针关联
对链表的插入删除,不需要移动节点位置,只对指针操作即可访问元素,要从头指针开始遍历
当数据需要频繁的插入删除的时候,需要使用链表当改动不大,查询频繁的时候,使用数组
潜规则 : 能用数组就不用链表
======================================================================
link.h
======================================================================
#ifndef _LINK_ #define _LINK_
using namespace std;
class Node{ //节点类public :
int val; //保存数据
Node* next ; //保存下一个节点的地址
Node(){ //构造函数,把指针初始化为 NULL next = NULL;
}
};
class Link{ protected :
Node* head; //头指针public :
Link();
~Link();
void insertTail(int); void insertHead(int); void del(int);
int indexOf(int); //查询一个元素的下标void update(int , int);
void disp();
};
#endif
======================================================================
link.cc
======================================================================
#include link.h #include iostream using namespace std;
Link::Link(){ head = NULL;
}
Link:: ~Link(){//释放空间,从头向尾释放if(head != NULL){
Node *p = head;
head = head-next; //把头节点向后移动delete p; //抛弃原来的那个头节点cout delete one ... endl;
}
}
//尾插入
void Link::insertTail(int v){
头指针中
Node *p = new Node; p-val = v;
if(head == NULL){
head = p; //让新节点的指针指向新节点,即把新节点的地址保存在
return ;
向下一个节点
}
Node * temp = head ; //用一个临时指针,从头节点开始找到 尾
while(temp - next != NULL){ //表示 temp 不是尾节点
temp = temp - next ; //用 temp 后面的一个指针为自己赋值,即指
}
temp - next = p; //尾插入,最后一个节点的指针保存新节点的地址
}
//头插入
void Link::insertHead(int v){
Node *p = new Node; //创建新节点p-val = v ; //保存数据
p-next = head; //让新节点的指针和头指针一样指向第一个节点head = p; //让头节点指向新节点
}
void Link::del(int v){ //找到被删除
文档评论(0)