美文网首页王道408数据结构
线性表两种建表方法

线性表两种建表方法

作者: sakura579 | 来源:发表于2020-08-05 15:46 被阅读0次

    顺序表建表



    数组作为顺序表的载体
    length描述顺序表的长度

    #include <iostream>
    using namespace std;
    
    int maxSize=10;
    int length;
    int createList(int A[],int &length)
    {
        cin>>length;
        if(length>maxSize)
            return 0;
        for(int i=0;i<length;i++)
            cin>>A[i];
        return 1;
    } 
    
    int main(){
        int A[10];
        int flag = createList(A,length);
        for(int i=0;i<length;i++){
            cout<<A[i]<<endl;
        }
        cout<<"flag="<<flag;
    }
    
    

    单链表建表
    就是一系列插入操作
    为了规范操作 一般在两个位置进行插入
    在表的头部 和表的尾部
    因此 有头插法建表法和尾插法建表法

    尾插法建表法 R是尾部的意思(不知道哪个单词的首字母)
    带头结点的单链表

    建单链表的数据来源问题 就是结点data域的值
    一种是传入一个数组 用数组的值设置链表中每个结点中data域的值
    另一种是通过键盘输入设置链表中每个结点中data域的值


    p指针是接收新结点的指针
    r指针是始终指向当前尾部结点的指针

    你每次为一个单链表申请结点空间的时候
    把它的next指针设置为null是一个非常好的习惯
    可能在很多情况下 避免错误


    这句话删掉 代码是没有问题的
    这里是链表尾部插入结点
    为了方便记忆 写成这个样子
    统一成在链表中部插入结点的操作
    形式上更统一些

    带头结点的单链表(H Head )
    头插法建表法

    通过这两种方法 对于同一组输入数据
    你会得到两个相反数据的链表

    这个while循环 用来检查是否有重复的数据
    while 前面 p = head->next 是初始化p
    使p指向第一个数据结点 再进入while 扫描整个链表

    没有重复的结点
    则while循环执行到最后 p为null指针
    进入if语句块 建立新结点 保存这个字符

    有重复结点 while循环break跳出 p不为null
    不会进入if语句块

    相关文章

      网友评论

        本文标题:线性表两种建表方法

        本文链接:https://www.haomeiwen.com/subject/jqynrktx.html