为了账号安全,请及时绑定邮箱和手机立即绑定
  • 通过构造一个类来储存线性表的内容。
    查看全部
  • 链表第0个是头,元素从1开始。
    查看全部
  • 一边看一边敲 #include <iostream> #include <stdlib.h> #include "List.h" using namespace std; /*线性表*/ int menu() { cout<<"功能菜单"<<endl; cout<<"1 新建联系人"<<endl; cout<<"2 删除联系人"<<endl; cout<<"3 浏览通讯录"<<endl; cout<<"4 退出通讯录"<<endl; cout<<"请输入:"; int order=0; cin>>order; return order; } void creatperson(List *pList) { Node node; Person person; cout<<"输入用户姓名:"; cin>>person.name; cout<<"输入电话号码:"; cin>>person.phone; node.data=person; pList->ListInsertTail(&node); } int main() { int userorder=0; List *pList=new List(); while(userorder!=4) { userorder=menu(); switch(userorder) { case 1: cout<<"用户指令-------》新建联系人"<<endl; creatperson(pList); break; case 2: cout<<"用户指令-------》删除联系人"<<endl; break; case 3: cout<<"用户指令-------》浏览通讯录"<<endl; pList->ListTravers(); break; case 4: cout<<"用户指令-------》退出通讯录"<<endl; break; } } delete pList; pList=NULL; system("pause"); return 0; } //List.h #ifndef LIST_H #define LIST_H #include "Node.h"
    查看全部
  • ClearList的功能是清空当然的线性表,不代表是释放线性表的内存,是将线性表当中的已经存放的元素全部清空,其实就是给m_iLength赋值0 就行了。因为以后再赋值是可以覆盖之前的值的
    查看全部
  • bool List::ListInsertHead(Node *pNode) //m_pList-newNode-next { Node *temp = m_pList -> next; //临时节点指向头节点的下一个节点 Node *newNode = new Node; //在堆中申请内存(若在栈中申请,则函数执行完后,内存就被回收掉了) if(newNode == NULL) //分配内存失败 { return false; } newNode -> data = pNode -> data; //获取传入进来的pNode的data m_pList -> next = newNode; newNode -> next = temp; return true; } bool List::ListInsertTail(Node *pNode) //currentNode-newNode-NULL { Node *currentNode = m_pList; //当前节点指向头节点 while(currentNode -> next != NULL) { currentNode = currentNode -> next; //当前节点往下传递 } //当前节点的下一个节点为NULL时,退出循环 Node *newNode = new Node; //在堆中申请内存,作为新节点 if(newNode == NULL) //若分配内存失败 { return false; } newNode -> data = pNode ->data; //对新节点的数据域进行赋值 newNode -> next = NULL; //新节点作为尾节点,它的下一个节点赋值为NULL currentNode -> next = newNode; //此时当前节点的下一个节点已不是NULL,而是新节点 return true; }
    查看全部
  • 什么是线性表:n个 数据元素的有限序列


    1、顺序表:使用数组,访问速度快,搜索能力强(数组本身就有下标)

    2、链表:静态链表、单链表、循环链表、双向链表

    栈与队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除,二者的区别是:栈只允许在表的一端进行插入和删除操作,是一种“后进先出”的线性表;而队列是允许在一端进行插入操作,在别一端进行删除和操作,是一种”先进先出“的线性表


    线性表的应用场景:通讯录、一元多项式

    查看全部
    1 采集 收起 来源:课程概述

    2020-03-13

  • 为什么有了顺序表还需要链表,因为两者互为补充

    顺序表的优缺点:

    优点:遍历和寻址时非常方便(因为基于数组)

    缺点:插入删除元素

    链表:

    http://img1.sycdn.imooc.com//5e3d32430001138b13400720.jpg

    http://img1.sycdn.imooc.com//5e3d324f0001138b13400720.jpg

    http://img1.sycdn.imooc.com//5e3d325b0001138b13400720.jpg

    有些计算机语言没有指针:

    http://img1.sycdn.imooc.com//5e3d326b0001cd4c09560716.jpg

    查看全部
    1 采集 收起 来源:链表算法说明

    2020-02-07

  • 链表的清空函数 ClearList() 的解释:

    将头结点m_pList后的所有节点删除,并将头结点m_pList的对象指针next指针置为NULL。

    void list::ClearList()
    {
        Node *currentNode = m_pList->next;
        while(currentNode != NULL)
        {
         Node *temp = currentNode->next;
         delete currentNode;
         currentNode = temp;
        }
        m_pList->next = NULL;
    }

    m_pList并没有被删除,其数据仍然为零( m_pList->data = 0 ),只是将其的next指针置为NULL( m_pList->next = NULL )。

    另外,此处 while(currentNode != NULL) 只是判断节点是否为空,并不是判断节点的对象指针。

    原因是:

    m_pList 是一个Node类型的对象指针,则其包含两个数据成员,一个是(i nt data ),另外一个是( Node *next )。

    其数据成员*next同时也是一个Node类型的对象,可以指向下一个节点(通过 Node *currentNode = m_pList->next  来将其下一个节点赋值给 currentNode )。

    m_pList 只作为头结点,其数据成员( m_pList->data )不放元素,没有任何意义;其对象指针成员( m_pList->next ) 只放链表第一个结点的地址。

    m_pList 虽然是一个头结点,但不算在链表中,此时 m_iLength = 0。【由3-3 链表编码实战(一)3:55处可知】

    查看全部
  • 前驱,

    后继

    Bool InitList(list** list);   创建线性表

    Void DestroyList (List *list); 销毁线性表

    void clearlist(list*list);  清空线性表

    bool listempty (list*list);判断线性表是否为空

    int ListEmpty(List*list);  判断线性表的长度

    Bool  GetElem (list*list,int i,elem*e);获取指定元素

    int locateelem(list*list,elem*e)寻找第一个满足e的数据元素的位序

    BOOL PriorElem   获取指定元素的前驱

    获取指定元素的后继

    在第i个位置插入元素

    在删除第i个位置的元素

    遍历线性表

    查看全部
  • 线性表:指n个有限个的数据元素序列

    数据元素:可以是一条记录,还可以是一个数字,字符,字符串,或者其他用户定义的数据类型

    线性表:顺序表(数组),链表(单链表,循环链表,双向链表)

    亲自动手,事半功倍

    查看全部
    1 采集 收起 来源:课程概述

    2018-09-29

  • &a是取地址 *a是取a里面的内容 函数中参数为*a表示要传入的是a的地址&a

    查看全部
  • Elem表示数据类型,可以在具体操作中使用不同数据类型。
    查看全部
  • 比较的是 *e,而不是 e , *e 这里是指针。
    查看全部
  • 实战四在看一遍
    查看全部
  • 线性表分为:顺序表(数组),链表 链表分为:静态链表,单链表,循环链表,双向链表
    查看全部
    1 采集 收起 来源:链表算法说明

    2017-09-21

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
"本课程是数据结构初级课程 1、熟练掌握C++语言基础语法"
老师告诉你能学到什么?
1、顺序表的工作原理 2、顺序表的实现方法及编码技巧 3、链表的工作原理 4、链表的实现方法及编码技巧 5、通讯录的实现原理及编码技巧

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!