| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 318 人关注过本帖
标题:嗨,我又来了,看谁在!
取消只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:0 
嗨,我又来了,看谁在!
半小时结哦,运气啦!

程序代码:
// 创建若干个链表,用数组记录每个链表的入口指针

#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 编辑 ]
搜索更多相关主题的帖子: void include number 
2012-08-05 03:28
快速回复:嗨,我又来了,看谁在!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016015 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved