嗨,我又来了,看谁在!
半小时结哦,运气啦!
程序代码:
// 创建若干个链表,用数组记录每个链表的入口指针
#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 编辑 ]






