链表

来源:互联网 发布:詹姆斯生涯场均数据 编辑:程序博客网 时间:2024/05/29 03:02

链表(linked list)

1.通过指针把它的一串存储结点链成一个链

2.存储节点由两部分组成:

- 数据域 + 指针域(后继地址)


3.分类(根据链接方式和指针多寡)



单链表(singly linked list)

1.简单的单链表

- 整个单链表:head

- 第一个结点:head

- 空表判断: head == NULL

- 当前结点a1 :curr


2.带头结点的单链表

- 整个单链表:head

- 第一个结点:head->next,head != NULL

- 空表判断: head->next == NULL

当前结点a1:fence->next(curr隐含)



单链表的定义

class lnklist::public List<T>  {private:                                     Link<T> *head,*tail;  //单链表的头,尾指针    Link<T> *setPos(const int p);  //第p个元素指针public:    lnkList(int s);  //构造函数      ~lnkList();    bool isEmpty();  //判断链表是否为空    void clear();  //将链表存储的内容清除,成为空表    int length();  //返回当前实际长度    bool append(const T value);  //在表尾添加元素value,表的长度增1    bool insert(const int p,const T value);  //位置p上插入一个元素    bool delete(const int p);  //删除位置上的元素    bool getValue(const int p,T& value);  //返回位置p的元素    bool getPos(int &p,const T value);  //查找值为value的元素};

查找单链表中第i个结点

//函数返回值是找到的结点指针template<class T>  //元素类型为TLink<T>*lnkList<T>::setPos(int i){    int count=0;    if(i==-1)  //i为-1则定位到头结点        return head;        //循环定位,若i为0则定位到第一个结点    Link<T>*p=head->next;    while(p!=NULL&&count<i)    {        p=p->next;        count++;    }    //当链表中结点数小于i时返回NULL    return p;}

单链表的插入


//插入数据内容为value的新结点作为第i个结点template<class T>bool lnkList<T>::insert(const int i,const T value){    Link<T>*P,*q;    if((p=setPos(i-1))==NULL)  //p是第i个结点前驱    {        cout<<"非法插入点"<<endl;        return false;    }    q=new link<T>(value,p->next);    p->next=q;    if(p==tail)  //插入点在链尾,插入结点成为新的链尾        tail=q;    return true;}

单链表的删除

1.从链表中删除结点x

- 用p指向元素x的结点的前驱结点

- 删除元素为x的结点

- 释放x占据的空间

template<class T>bool lnkList<T>::delete((const int i)){    Link<T>*P,*q;    //待当前结点不存在,即给定的i大于当前链中元素的个数    if((p=setPos(i-1))==NULL||p==tail)     {        cout<<"非法删除点"<<endl;        return false;    }    q=p->next;  //q是待删结点    if(q==tail)  //待删结点为尾结点,则修改尾指针    {        tail=p;        p->next=NULL;    }    else   //删除结点q并修改链指针        p->next=q->next;    delete q;    return true;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 云霄读音 云霄的读音 云霄烟 白苏傅云霄 剑傲云霄 冲上云霄1 云霄飞车 云霄县 仙路云霄 云霄吧 云霄招工网 云霄教育网 福建云霄 云霄论坛 云霄站 飞上云霄 直冲云霄 上云霄 龙升云霄影视先锋 爱在云霄之上 龙升云霄作品 唐伯虎冲上云霄 响彻云霄意思 爱在云霄之上免费阅读 响彻云霄的意思 爱在云霄之上叶希安 冲上云霄粤语 唐伯虎冲上云霄粤语 响彻云霄造句 白苏傅云霄全文免费阅读 爱在云霄之上全文免费阅读 唐伯虎冲上云霄在线看 冲上云霄2粤语 白苏傅云霄免费阅读 爱在云霄之上免费阅读24599 云宵 影视先锋龙升云霄 影视先峰龙升云霄 位面红包司徒云霄 降临诸天世界龙升云霄 魔道祖师之洛染云霄