嗨,我又来了,看谁在!
半小时结哦,运气啦!程序代码:
// 创建若干个链表,用数组记录每个链表的入口指针 #include <cstdio> #include <conio.h> // 数据结构 struct LinkLNode { int No; int Data; LinkLNode* Next; }; // 函数原型 void Pause(void); LinkLNode* Create_Link(size_t number); void Show_Link(LinkLNode* pHead); void Release_Link(LinkLNode* pItem); // 程序入口 int main(void) { const size_t Links_Quantity = 5; // 链表数量 const size_t Items_Of_Link = 3; // 每个链表的项数 LinkLNode* Links[Links_Quantity]; for (size_t i = 0; i < Links_Quantity; ++i) { Links[i] = Create_Link(Items_Of_Link); if (Links[i] != nullptr) { Show_Link(Links[i]); } } Pause(); for (size_t i = 0; i < Links_Quantity; ++i) { if (Links[i] != nullptr) { Release_Link(Links[i]); Links[i] = nullptr; } } return 0; } void Pause(void) { printf_s("\nPress any key to continue..."); _getch(); } // 在堆中创建具有number个项的链表,返回头指针 LinkLNode* Create_Link(size_t number) { LinkLNode* pHead = nullptr; LinkLNode* pPrevious = nullptr; static int counter = 0; for (size_t i = 0; i < number; ++i) { ++counter; LinkLNode* pItem = new LinkLNode; if (pItem != nullptr) { pItem->No = counter; pItem->Data = counter * 256; pItem->Next = nullptr; if (i > 0) { pPrevious->Next = pItem; } else { pHead = pItem; } pPrevious = pItem; } else { Release_Link(pHead); pHead = nullptr; } } return pHead; } // 打印从指定入口处开始的链表 void Show_Link(LinkLNode* pItem) { printf_s("The link entery: %p\n", pItem); while (pItem != nullptr) { printf_s("No = %d, Data = %d, Next: %p\n", pItem->No, pItem->Data, pItem->Next); pItem = pItem->Next; } putchar('\n'); } // 释放从指定入口处开始的链表 void Release_Link(LinkLNode* pItem) { while (pItem->Next != nullptr) { LinkLNode* pNext = pItem->Next; delete pItem; pItem = pNext; } }
[ 本帖最后由 TonyDeng 于 2012-8-5 12:24 编辑 ]