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+LSTM实现单通道脑电信号EEG的睡眠分期评估
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路