色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

C語言這種結構體如何構造一個空的線性表L?

錢良釵2年前17瀏覽0評論

函數main()里的語句LinkListL;系統自動給變量L分配了內存,

L對應的是第2個結構體,也就是LinkList.

調用初始化函數InitList(),給變量L里的成員head,tail,len進行賦值,

L.head指向的就是空鏈表,此時,L.head=NULL,同時,L.len=0,表示沒有結點.

所以執行函數InitList()之后,也就制造了空鏈表.

執行函數InsertNode()之后,鏈表就加入了新結點,結點對應的是第1個結構體,也就是LNode

L.head指向鏈表的頭結點,L.tail指向鏈表的末尾結點,L.len表示結點的數量.

測試結果:

初始化之后,鏈表長度是0

插入數據之后,鏈表長度是3

鏈表里的數據是:102030

//代碼用了"引用"(&),所以要用C++編譯器進行測試

#include<stdio.h>

#include<stdlib.h>

typedefintElemType;

typedefintStatus;

typedefstructLNode

{

ElemTypedata;

structLNode*next;

}*Link,*Position;

typedefstruct

{

Linkhead,tail;

intlen;

}LinkList;

StatusInitList(LinkList&L);

StatusInsertNode(LinkList&L,ElemTypee);

StatusListTraverse(LinkListL);

intListLength(LinkListL);

//鏈表初始化

StatusInitList(LinkList&L)//&是"引用"符號

{

L.head=NULL;

L.tail=NULL;

L.len=0;

return1;

}

//插入結點

StatusInsertNode(LinkList&L,ElemTypee)//&是"引用"符號

{

LNode*newNode;

newNode=(LNode*)malloc(sizeof(LNode));

if(newNode==NULL)

{

printf("\n分配內存錯誤.\n");

exit(1);

}

newNode->data=e;

newNode->next=NULL;

//用"尾插法"添加新結點

if(L.head==NULL)

{

L.head=newNode;

L.tail=newNode;

L.len=1;

}

else

{

L.tail->next=newNode;

L.tail=newNode;

L.len=L.len+1;

}

return1;

}

//鏈表遍歷

StatusListTraverse(LinkListL)

{

Linkp;

p=L.head;

if(p==NULL)

{

printf("\n鏈表為空.\n");

return0;

}

while(p!=NULL)

{

printf("%d",p->data);

p=p->next;

}

printf("\n");

return1;

}

//鏈表長度

intListLength(LinkListL)

{

returnL.len;

}

intmain()

{

LinkListL;

InitList(L);

printf("初始化之后,鏈表長度是%d\n",ListLength(L));

InsertNode(L,10);

InsertNode(L,20);

InsertNode(L,30);

printf("插入數據之后,鏈表長度是%d\n",ListLength(L));

printf("鏈表里的數據是:");

ListTraverse(L);

return0;

}