不带头结点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include<stdio.h> typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; bool InitList(LinkList &L); bool Empty(LinkList L);
int main(void) { LinkList L; InitList(L); if (Empty(L)) { printf("链表为空!"); } return 0; }
bool InitList(LinkList &L) { L = NULL; return true; }
bool Empty(LinkList L) { return (L==NULL); }
|
注意事项
(一)不带头结点只要判断头指针是否为空就能判断链表是否为空
(二)初始化链表之前需要将头指针置空
带头结点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include<stdio.h> #include<stdlib.h> typedef struct LNode { int data; struct LNode *next; }LNode, *LinkList; bool InitList(LinkList &L); bool Empty(LinkList L);
int main(void) { LinkList L; InitList(L); if (Empty(L)) { printf("链表为空!"); } return 0; }
bool InitList(LinkList &L) { L = (LNode *)malloc(sizeof(LNode)); if (L == NULL) { return false; } L->next = NULL; return true; }
bool Empty(LinkList L) { if (L->next == NULL) { return true; } else { return false; } }
|
注意事项
(一)头结点并不存储数据,是为了之后的操作
(二)判断链表是否为空,判断的是头结点之后的节点是否为空