//顺序表基本运算算法
#include <stdio.h>
#include <malloc.h>
#define MaxSize 50
typedef int ElemType;
typedef struct
{   ElemType data[MaxSize];     //存放顺序表元素int length;                    //存放顺序表的长度
} SqList;                       //顺序表的类型
void CreateList(SqList *&L,ElemType a[],int n)
//建立顺序表
{L=(SqList *)malloc(sizeof(SqList));for (int i=0;i<n;i++)L->data[i]=a[i];L->length=n;printf("L=%d\n", L);//此句仅测试使用,看一下L所指向的地址
}
int main(){SqList *Head = NULL;int a[5] = {1,2,3,4,5};CreateList(Head,a, 5);printf("Head=%d\n", Head);此句仅测试使用,看一下Head所指向的地址return 0;
}

有上面这样一段代码,CreateList函数中的参数SqList *&L是什么呢?实际上它是对结构体类型指针的引用,通常我们说函数的参数用&表示需要将传进去的参数“带回来”,比如下面代码:

#include <stdio.h>
int func(int &a){a = 5;
}
int main(){int x = 10;func(x);printf("x=%d", x);//输出结果为x=5
}

func参数为int &a,表示对整形变量的引用,即需要传入的参数需要为整形,结果将会被“带回来”,所以无论x值为多少,引用传参后值都会变为5。同理CreateList函数中的参数SqList *&L就是对SqList类型指针的引用,即main函数中无论SqList型指针Head原来指向什么(此处为NULL),传入CreateList后,与其中的L指向的都是同一个地址,通过两个printf可以进行验证。

如果去掉&,函数变为void CreateList(SqList *L,ElemType a[],int n)结果会怎样呢?

void CreateList(SqList *L,ElemType a[],int n)//仅将SqList *&L修改为SqList *L,其他均无变化
//建立顺序表
{L=(SqList *)malloc(sizeof(SqList));for (int i=0;i<n;i++)L->data[i]=a[i];L->length=n;printf("L=%d\n", L);//此句仅测试使用,看一下L所指向的地址
}

运行结果

可以看出不加引用,Head传入后仅仅相当于给L赋了一个初值,L指向的地址不会影响Head。

在单链表结构的定义过程中,严蔚敏版数据结构教材定义了结构体类型指针LinkList(typedef struct LNode *Linklist),所以在传递结构体指针的引用时,直接使用LinkList &L,而李春葆版本的数据结构教材没有这样的定义,传递参数使用LNode *&L

typedef struct LNode{ElemType   data;       //数据域struct LNode  *next;   //指针域
}LNode,*LinkList; // LinkList为Lnode类型的指针

关于引用传递:

1、实际上引用相当于给变量起别名,比如下面代码,j是i的引用,也就是j是i的别名,它们实际上就是一个东西,所以无论修改哪一个,另一个都会跟着变。

int i = 5;
int &j = i;
j = 10;
printf("i=%d, j=%d", i, j);//得到i和j的值都是10

2、传递引用给函数形参变化实参也发生变化,但是传递指针不一定,需要根据内部的操作具体判断。引用类型作形参,在内存中并没有产生实参的副本,它直接对实参操作;而一般变量作参数,形参与实参就占用不同的存储单元,所以形参变量的值是实参变量的副本。

参考文章:https://blog.csdn.net/tingfengx/article/details/8787218

https://blog.csdn.net/weixin_30580341/article/details/98689928?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&dist_request_id=c8fef2f1-72d2-4a36-95a4-6c3e78319eb6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control

【顺序表】SqList *L是什么意思相关推荐

  1. 顺序表Sqlist.cpp

    顺序表Sqlist.cpp 文章目录 顺序表Sqlist.cpp 1 顺序表插入逻辑 2 顺序表删除逻辑 3 代码演示 4 运行结果 1 顺序表插入逻辑 在表的第 i 个位置前插入一个元素 实现步骤: ...

  2. 数据结构顺序表中 *L 和 *L

    &是引用的意思,要返回到main里面进行操作.改变的顺序表需要带上&,如果只在对应函数操作的顺序表则不用.

  3. 顺序表(线性表的顺序存储)---C语言版

    目录 顺序表 一.顺序表的定义 二.顺序表上基本操作的具体实现 1.`InitList_Sq(*L)`:初始化表.构造一个空的顺序表. 分类一:主函数里声明的是一个指向顺序表的指针 分类二:主函数里声 ...

  4. 6-2 有序顺序表的插入

    本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序 ...

  5. 顺序表——有序顺序表的插入

    本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, ElemType e)用于向顺序表中按递增的顺序 ...

  6. 顺序表的查找C语言数据结构

    在顺序表中查找元素 大致代码片有注释,若还有疑问,可进行评论 #include<stdio.h> #include<stdlib.h>#define Maxsize 10 // ...

  7. 6-2 有序顺序表的插入 (10 分)

    6-2 有序顺序表的插入 (10 分) 本题要求实现递增顺序表的有序插入函数.L是一个递增的有序顺序表,函数Status ListInsert_SortedSq(SqList &L, Elem ...

  8. 顺序表-删除所有元素值为x结点(另建表存放+复制到原表)

    顺序表的存储结构: typedef struct{int data[Maxsize]; //存在顺序表中的元素int length; //存放顺序表的长度}SqList; 分析: 这里要删除顺序表的所 ...

  9. 第3周实践项目1 顺序表的基本运算

    /*copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源 *完成日期:2017年9月19日 *版本号:v1.0 ...

  10. 数据结构趣题——顺序表就地逆置

    利用原表的存储空间将顺序表(a1,a2,--,an)逆置为(an,an-1,---a1). 1: #include <stdio.h> 2: #include <stdlib.h&g ...

最新文章

  1. Windows Live Messenger  正式版已经发布
  2. LibreOJ β Round #2
  3. asp oracle 分页显示,利用ASP实现Oracle数据记录的分页显示
  4. CSP认证201609-2 火车购票[C++题解]:模拟、vector、排序
  5. 【论文精读】PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization
  6. 浏览器显示无法解析服务器的DNS地址,使用搜狗浏览器时突然弹出无法解析服务器的DNS地址该如何处理...
  7. Linux编程练习 --多线程5--信号量(semaphore)
  8. C++——OOP(Object-Oriented Programming) vs. GP(Generic Programming)
  9. php和html开发工具,常用的php开发工具有哪些?
  10. ----------------------------------------spring 整合jdbc---------------------
  11. 自动生成构造方法、getter、setter
  12. 神经网络软件有哪些,神经网络分析软件
  13. 一、Java11安装
  14. AS 5637.1跟AS 3837是什么关系?
  15. 高德地图marker屏蔽Label
  16. Mac u盘加密没有 日志式加密选项
  17. 表格中单元格的间距设置
  18. 上海理工大学计算机专业考研难度,上海理工大学机械(专硕)专业考研难度分析-专业排名-难度大小...
  19. 观爱丽丝梦游仙境有感
  20. royaleapi中文版_皇室战争:CR锄强扶弱式平衡调整基本成型,精锐成4月扶贫对象...

热门文章

  1. android 休眠任务不执行_Android休眠机制
  2. cmt obm odm 代工模式oem_什么是OEM,ODM与OBM
  3. 菠萝罐头的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. Arc consistency in CSPs
  5. Palantir早期员工、连续创业者Brien Colwell:创业动力源自创造文化
  6. 2019谷歌开发者大会
  7. 一些图像置乱算法matlab
  8. 神经网络对灰度图像的处理转为对彩色RGB图像的处理
  9. 有关windows10修改C盘用户中文名文件夹相关问题的具体解决方案
  10. 一小时建立数据分析平台