链表类型题目需要用到的头文件list.h
生活随笔
收集整理的這篇文章主要介紹了
链表类型题目需要用到的头文件list.h
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下面是后面鏈表相關題目中需要用到的鏈表結點的定義和相關操作函數,參見下面的list.h文件:
注意鏈表結點的定義采用cpp的定義方式,它會被cpp的文件調用。比如后面刪除鏈表重復結點的文件del_repeated_list.cpp中的編譯方式:
g++ -g?del_repeated_list.cpp -o?del_repeated_list
#include <stdio.h>
#include <stdlib.h>struct ListNode{int value;ListNode* next;
};ListNode* CreateListNode(int value){ListNode* pNode = new ListNode();pNode->value = value;pNode->next = NULL;return pNode;
}void ConnectListNode(ListNode* pCurrent, ListNode* pNext){if(pCurrent == NULL){printf("Error to connect two nodes.\n");exit(1);}pCurrent->next = pNext;
}void PrintListNode(ListNode* pNode){if(pNode == NULL)printf("The node is null.\n");elseprintf("The key in node is %d.\n", pNode->value);
}void PrintList(ListNode* pHead){ListNode* pNode = pHead;while(pNode){printf("%d\t", pNode->value);pNode = pNode->next;}printf("\n");
}void DestroyList(ListNode* pHead){ListNode* pNode = pHead;while(pNode){ListNode* pNext = pNode->next;delete pNode;pNode = pNext;}
}void AddToTail(ListNode** pHead, int value){ListNode* pNode = new ListNode();pNode->value = value;pNode->next = NULL;if(*pHead == NULL)*pHead = pNode;else{ListNode* pCurrent = *pHead;while(pCurrent->next)pCurrent = pCurrent->next;pCurrent->next = pNode;}
}void RemoveHead(ListNode** pHead, int value){if(pHead == NULL || *pHead == NULL)return;ListNode* pToBeDeleted = NULL;if((*pHead)->value == value){pToBeDeleted = *pHead;*pHead = (*pHead)->next;}else{ListNode* pNode = *pHead;while(pNode->next != NULL && pNode->next->value != value)pNode = pNode->next;if(pNode->next != NULL && pNode->next->value == value){pToBeDeleted = pNode->next;pNode->next = pNode->next->next;}}if(pToBeDeleted != NULL){delete pToBeDeleted;pToBeDeleted = NULL;}
}
總結
以上是生活随笔為你收集整理的链表类型题目需要用到的头文件list.h的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一道题弄明白二维数组的指针
- 下一篇: tree类型题目需要用到的头文件tree