c primer plus 第十七章课后编程3题

/*假设list.h(程序清单17.5)中的函数以适应新的定义,并通过films.c
(程序清单17.4)测试最终的代码
#define MAXSIZE 100
typedef struct list
{
Item entries[MAZSIZE];
int items;
}List;
重写list.c中的函数以适应新的定义,
只修改了list.c中的代码,没有对films.c 和list.h 作修改,所以只发修改的
list.c */
#include “list.h”
#include <stdio.h>
#include <stdlib.h>

/接口函数/
/结构数组,得对数组元素中 结构的每个成员初始化,/
void InitializeList(List *plist)
{
int i;
for(i=0; i<MAXSIZE;i++)
{
plist->entries[i].title[0] = ‘\0’; //数组成员初始化
plist->entries[i].rating = 0;
}
plist->items = 0;

}

/如果链表为空,返回true/
bool ListIsEmpty(const List *plist)
{
if(plist == NULL)
return true;
else
return false;
}

/如果链表已满,返回true/
bool ListIsFull(const List *plist)
{

bool full;


if(plist->items >= 100)
    full = true;
else
    full = false;

return full;

}

/返回节点的数量/
unsigned int ListItemCount(const List *plist)
{
unsigned int count = plist->items;

return count;

}

/直接把信息拷贝到结构数组中,如果满了,提示已满。/
bool AddItem(Item item, List *plist)
{
plist->entries[plist->items] = item;
++plist->items;
if(ListIsFull(plist))
{
fprintf(stderr, “No memory available! Bye!\n”);
return false;
}
else
return true;
}

/访问每个节点并执行pfun指向的函数/
void Traverse(const List *plist, void(*pfun)(Item item))
{
int i;
for(i=0; iitems; i++)
(*pfun)(plist->entries[i]);
}

/* 已经没有必要使用 */
void EmptyTheList(List *plist)
{

}

发布了85 篇原创文章 · 获赞 1 · 访问量 1889

猜你喜欢

转载自blog.csdn.net/Tekkenwxp/article/details/103499459