数据结构链表中LinkList& L中&的作用
2014-05-04 18:33
357 查看
代码:
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define ElemType int
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int CreateLink_L(LinkList& L,int n){ //问题:为什么这里要加&
// 创建含有n个元素的单链表
LinkList p,q;
int i;
ElemType e;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL; // 先建立一个带头结点的单链表
q = (LinkList)malloc(sizeof(LNode));
q = L;
for (i=0; i<n; i++) {
scanf("%d", &e);
p = (LinkList)malloc(sizeof(LNode)); // 生成新结点
p->data=e;
p->next=NULL;
q->next=p;
q=q->next;
}
return OK;
}
int LoadLink_L(LinkList L){
// 单链表遍历
LinkList p = L->next;
if(!p)printf("The List is empty!");
else
{
printf("The LinkList is:");
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
printf("\n");
return OK;
}
int main()
{
LinkList T;
int n;
printf("Please input the init size of the linklist:\n");
scanf("%d",&n);
printf("Please input the %d element of the linklist:\n", n);
if(CreateLink_L(T,n)) // 判断链表是否创建成功,请填空
{
printf("A Link List Has Created.\n");
LoadLink_L(T);
}
}
问题:int CreateLink_L(LinkList& L,int n){ //问题:为什么这里要加&
解答:一般情况,向函数传递指针类型的参数,可以让函数改变指针指向的内容,并将改变的效果返回;这里要改变指针变量L本身的值,使它指向新开辟的内存空间L = (LinkList)malloc(sizeof(LNode)),而不是要改变L所指向的内容的值,所以,要么向函数传递L的引用,要么传递指向L的指针(指向指针的指针)
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define ElemType int
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int CreateLink_L(LinkList& L,int n){ //问题:为什么这里要加&
// 创建含有n个元素的单链表
LinkList p,q;
int i;
ElemType e;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL; // 先建立一个带头结点的单链表
q = (LinkList)malloc(sizeof(LNode));
q = L;
for (i=0; i<n; i++) {
scanf("%d", &e);
p = (LinkList)malloc(sizeof(LNode)); // 生成新结点
p->data=e;
p->next=NULL;
q->next=p;
q=q->next;
}
return OK;
}
int LoadLink_L(LinkList L){
// 单链表遍历
LinkList p = L->next;
if(!p)printf("The List is empty!");
else
{
printf("The LinkList is:");
while(p)
{
printf("%d ",p->data);
p=p->next;
}
}
printf("\n");
return OK;
}
int main()
{
LinkList T;
int n;
printf("Please input the init size of the linklist:\n");
scanf("%d",&n);
printf("Please input the %d element of the linklist:\n", n);
if(CreateLink_L(T,n)) // 判断链表是否创建成功,请填空
{
printf("A Link List Has Created.\n");
LoadLink_L(T);
}
}
问题:int CreateLink_L(LinkList& L,int n){ //问题:为什么这里要加&
解答:一般情况,向函数传递指针类型的参数,可以让函数改变指针指向的内容,并将改变的效果返回;这里要改变指针变量L本身的值,使它指向新开辟的内存空间L = (LinkList)malloc(sizeof(LNode)),而不是要改变L所指向的内容的值,所以,要么向函数传递L的引用,要么传递指向L的指针(指向指针的指针)
相关文章推荐
- 【2015/11/15】 数据结构学习日志_Day16 链表 我的<LinkList.c>
- 数据结构模版----单链表SimpleLinkList[不带头结点&&伪OO](C语言实现)
- 数据结构学习笔记3(链表 下 双向链表&单链表逆转)
- 【数据结构】·【带头结点的单链表】
- '数据结构' 链表
- C语言-数据结构-linklist(单链表)(未完)
- AT&T汇编语言与GCC内嵌汇编,Linux内核数据结构之链表
- C#常用数据结构:数组,ArrayList,List<>,链表,Queue,Stack,Dictionary
- 数据结构:可变数组->链表
- 学生信息管理系统-顺序表&&链表(数据结构第一次作业)
- 数据结构 -- 链表&双向链表
- 数据结构-栈&队列&单向链表
- 数据结构第一次作业(学生信息管理系统-顺序表&&链表)
- 链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别
- 数据结构-单链表(LinkList)2
- 小白学数据结构——一、线性结构(数组&链表)
- 数据结构-单链表&单循环链表
- 数据结构9————马鞍点问题&三元组稀疏矩阵&十字链表稀疏链表的加减法
- 数据结构复习之二叉树:遍历、搜索节点&路径、查找、与单链表互转、逐层打印
- 单链表及基本运算 && 双向链表及基本运算 && 静态链表