函式main()裡的語句 LinkList L; 系統自動給變數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
連結串列裡的資料是: 10 20 30
//程式碼用了"引用"(&),所以要用C++編譯器進行測試
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}*Link, *Position;
typedef struct
Link head,tail;
int len;
}LinkList;
Status InitList(LinkList &L);
Status InsertNode(LinkList &L,ElemType e);
Status ListTraverse(LinkList L);
int ListLength(LinkList L);
//連結串列初始化
Status InitList(LinkList &L) //&是"引用"符號
L.head = NULL;
L.tail = NULL;
L.len = 0;
return 1;
}
//插入結點
Status InsertNode(LinkList &L,ElemType e) //&是"引用"符號
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.len = L.len+1;
//連結串列遍歷
Status ListTraverse(LinkList L)
Link p;
p = L.head;
if(p == NULL)
printf("\n連結串列為空.\n");
return 0;
while(p != NULL)
printf("%d ",p->data);
p = p->next;
printf("\n");
//連結串列長度
int ListLength(LinkList L)
return L.len;
int main()
LinkList L;
InitList(L);
printf("初始化之後,連結串列長度是 %d\n",ListLength(L));
InsertNode(L,10);
InsertNode(L,20);
InsertNode(L,30);
printf("插入資料之後,連結串列長度是 %d\n",ListLength(L));
printf("連結串列裡的資料是: ");
ListTraverse(L);
函式main()裡的語句 LinkList L; 系統自動給變數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
連結串列裡的資料是: 10 20 30
//程式碼用了"引用"(&),所以要用C++編譯器進行測試
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}*Link, *Position;
typedef struct
{
Link head,tail;
int len;
}LinkList;
Status InitList(LinkList &L);
Status InsertNode(LinkList &L,ElemType e);
Status ListTraverse(LinkList L);
int ListLength(LinkList L);
//連結串列初始化
Status InitList(LinkList &L) //&是"引用"符號
{
L.head = NULL;
L.tail = NULL;
L.len = 0;
return 1;
}
//插入結點
Status InsertNode(LinkList &L,ElemType e) //&是"引用"符號
{
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;
}
return 1;
}
//連結串列遍歷
Status ListTraverse(LinkList L)
{
Link p;
p = L.head;
if(p == NULL)
{
printf("\n連結串列為空.\n");
return 0;
}
while(p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
return 1;
}
//連結串列長度
int ListLength(LinkList L)
{
return L.len;
}
int main()
{
LinkList L;
InitList(L);
printf("初始化之後,連結串列長度是 %d\n",ListLength(L));
InsertNode(L,10);
InsertNode(L,20);
InsertNode(L,30);
printf("插入資料之後,連結串列長度是 %d\n",ListLength(L));
printf("連結串列裡的資料是: ");
ListTraverse(L);
return 0;
}