链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 06:14:05
链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别

链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别
链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别

链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别
typedef struct Node{
int elem;
struct node * next;
}node,*LinkList;
对于LinkList L:L是指向定义的node结构体的指针,可以用->运算符来访问结构体成员,即L->elem,而(*L)就是个Node型的结构体了,可以用点运算符访问该结构体成员,即(*L).elem;
对于LinkList *L:L是指向定义的Node结构体指针的指针,所以(*L)是指向Node结构体的指针,可以用->运算符来访问结构体成员,即(*L)->elem,当然,(**L)就是Node型结构体了,所以可以用点运算符来访问结构体成员,即(**L).elem;
在链表操作中,我们常常要用链表变量作物函数的参数,这时,用LinkList L还是LinkList *L就很值得考虑深究了,一个用不好,函数就会出现逻辑错误,其准则是:
如果函数会改变指针L的值,而你希望函数结束调用后保存L的值,那你就要用LinkList *L,这样,向函数传递的就是指针的地址,结束调用后,自然就可以去改变指针的值;
而如果函数只会修改指针所指向的内容,而不会更改指针的值,那么用LinkList L就行了;
下面说个具体实例吧!
#include
#include
typedef int ElemType;
typedef struct Node{
\x09ElemType elem;
\x09struct Node * next;
}Node,* LinkList;
//初始化链表,函数调用完毕后,L会指向一个空的链表,即会改变指针的值,所以要用*L
void InitList(LinkList *L)
{
\x09*L = (LinkList)malloc(sizeof(Node));
\x09(*L)->next = NULL;
}
//清空链表L,使L重新变为空链表,函数调用完后不会改变指针L的值,只会改变指针L所指向的内容(即L->next的值)
void ClearList(LinkList L)
{
\x09LinkList p;
\x09while(p = L->next)
\x09\x09free(p);
}
//销毁链表L,释放链表L申请的内存,使L的值重新变为NULL,所以会改变L的值,得用*L
void DestroyList(LinkList *L)
{
\x09LinkList p;
\x09while(p = (*L)->next )
\x09\x09free(p);
\x09free(*L);
\x09*L = NULL;
}
void main()
{
\x09LinkList L = NULL;
\x09InitList(&L);
\x09ClearList(L);
\x09DestroyList(&L);
}

链表中LinkList L与LinkList *L的区别以及(*L).elem,L.elem L->next,(*L)->next的区别 LinkList&L和LinkList L有什么不同 LinkList search(LinkList *L, ElemType x) 请问这就话的LinkList和ElemType是什么意思 sqlist与linklist的区别.. void Createlist(linklist (*& L),elemtype a[],int n) //jianli shunxu lianbiao {linklist *s,*r;int i;void Createlist(linklist (*& L),elemtype a[],int n) //jianli shunxu lianbiao{linklist *s,*r;int i;L=(linklist *)malloc(sizeof(linklist)) //chuangjianto C语言中Linklist * L和Linklist *& L有什么区别么?各表达什么.. { LinkList q; while(*L) { q = (*L)->next; free(*L); *L=q; 这个当中的Linklist q, 在数据结构中 LinkList *p=L->next;While(p! C语言关于函数形参中指针类型的取地址符问题#include#includetypedef struct {int num;//学号}Datatype;typedef struct LNode{Datatype Data;struct LNode *next;}LNode,*Linklist;void a(Linklist &l){Linklist head=(Linklist)malloc(sizeof(LN void DestroyList(LinkList &L)中有&是什么意思,而void ClearList(LinkList L)中又不需要,//将L重置为空表void ClearList(LinkList L){LinkList p,q;p=L->next;while(p){q=p->next;free(p);p=q;}L->next=NULL;} //销毁线性表void DestroyList(L c语言求两个多项式之和算法错误#include #include typedef struct Lnode{float coef; //系数 int expn; //指数struct Lnode *next; }LinkList;LinkList * CreatList(int n) //用n限制循环次数 {LinkList *L,*p,*r;int i;L=(LinkList *)malloc( 我想怎样用指针来比较两个数的大小 指针指的节点 与后一个节点的数字对比啊void CreateList_L(LinkList &L,int n)/{LNode *p,*r;int i;L=new LNode;L->next=NULL;r=L;for(i=0; i>p->data;p->next=NULL;r->next=p;r=p;}}LNode* max(Li 关于数据结构的一道题试写一算法,将指针s指向的无头结点的单链表链接到带头结点单链表L的最后一个结点之后.函数原型使用Status ListAppend(LinkList&L,LinkList s). 下面的while(p)和if(p)的具体意思int ListLength_L(LinkList &L){int i=0;LinkList p=L;if(p) p=p-next;while(p){p=p->next;i++;}return i;} 循环链表的问题#includeusing namespace std;int main(){struct LNode //节点{int data; //数据域int num; //节点编号struct LNode *next; //指针域};typedef LNode *LinkList;LinkList p,q,L;int n,m;cout void setData(linklist 严书数据结构P31算法2.12MergeList-L中 pc->next=pa?pa:pb怎么理解?严蔚敏版 31页算法2.12题目是归并两个单链表的算法.void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc) {pa=La->next; pb=Lb->next;Lc=pc=La;while(pa&&pb){ 数据结构里的LinkList是系统自己定义好的函数么?无须自己再定义LinkList函数么?学数据结构的时候莫名其妙看到它来个...LinkList .,就蒙了,知道它是链表的意思,但是书本上给的代码段都没有对L