aahello123 2016-05-13 13:41 采纳率: 100%
浏览 2951
已结题

数据结构中的线性表中的指针使用

数据结构 单链表
类型定义:
typedef struct lnode
{
elemtype data;
struct lnode *next;
}Lnode, *LinkList;

int InitList(LinkList L)//构造一个空的线性表L
{ 构造一个空的线性表L
*L=(LinkList)malloc(sizeof(struct LNode));
if(!*L) /
存储分配失败 /
exit(OVERFLOW);
(*L)->next=NULL; /
指针域为空 */
return OK;
}

int ListInsert(LinkList L,int i,ElemType e) //在带头结点的单链线性表L中第i个位置之前插入元素e
{
int j=0;
LinkList p=L,s;
while(p&&j {
p=p->next;
j++;
}
if(!p||j>i-1) /* i小于1或者大于表长 /
return ERROR;
s=(LinkList)malloc(sizeof(struct LNode)); /
生成新结点 /
s->data=e; /
插入L中 */
s->next=p->next;
p->next=s;
return OK;
}

void main()
{
LinkList L;
ElemType e;
int i;
int j;
i=InitList(&L);
for(j=1;j<=10;j++)
ListInsert(L,j,j);
}
在类型定义中linklist已经是指向节点的指针了,为什么在构造一个空的线性表L的函数int InitList(LinkList *L) 中形参为LinkList *L(即L为指向指针的指针),而不是LinkList L????linklist作为一个指针也可以操作链表的呀!!!
在链表插入函数int ListInsert(LinkList L,int i,ElemType e)中,形参为什么却变成了LinkList L???
在main函数中定义的是指针变量LinkList L; 为何不定义成Lnode L????
什么时候该用LinkList *L,什么时候该用LinkList L,什么时候该用Lnode L?????它们的区别是什么????望大神详细回答,感激万分!!!

  • 写回答

3条回答

  • threenewbee 2016-05-13 13:51
    关注

    因为你希望将L指向另一个指针,而调用者可以得到这个新的指针,所以要用指针的指针。
    如果不用指针,那么将L指向别的指针,实参不会受影响,也就起不到初始化的作用。

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建