ADT List 的实现

头文件list.h

#include<stdbool.h>
#ifndef LIST_H_
#define LIST_H_
#define T_SIZE 41

struct film{
    char name[T_SIZE];
    int ratting;
};
typedef struct film Item;

struct node{
    Item data;
    struct node * next;

};

typedef struct node Node;
typedef Node * List;

void initList(List * plist);

bool listIsEmpty(const List * plist);

bool listIsFull(const List * plist);

unsigned int listItemCount(const List * plist);

bool addItem(Item item, List * plist);

//void traverse(const List * plist, void (*pfun)(Item item));

bool emptyTheList(List * plist);

#endif

list的实现 list.c文件

#include<stdio.h>
#include<stdlib.h>
#include "list.h"

void initList(List * plist){
    *plist = NULL;
}

bool listIsEmpty(const List * plist){
    if(*plist == NULL)
        return true;
    else
        return false;
}

bool listIsFull(const List * plist){
    Node *pt;
    bool full;
    pt = (Node *)malloc(sizeof(Node));
    if(pt == NULL)
        full = true;
    else
        full = false;
    free(pt);
    return full;
}

unsigned int listItemCount(const List * plist){
    unsigned int count = 0;
    Node * temp;
    temp = *plist;
    while(temp != NULL){
        count ++;
        temp = temp -> next;
    }
    return count;
}

bool addItem(Item item, List * plist){
    bool result = false;
    Node *temp;
    Node *f;
    temp = (Node *)malloc(sizeof(Node));
    if(temp == NULL){
        free(temp);
        return false;
    }
    temp -> data = item;
    temp -> next = NULL;

    if(*plist == NULL)
        *plist = temp;
    else{
        f = *plist;
        while(f -> next != NULL)
            f = f -> next;
        f -> next = temp;
    }
    f = NULL;
    temp = NULL;
    return true;
}

bool emptyTheList(List * plist){
    Node *f;
    Node *p;
    p = *plist;
    f = p -> next;
    free(p);
    while(f != NULL){
        p = f;
        f = f -> next;
        free(p);
    }
    p = NULL;
    f = NULL;
    *plist = NULL;
    return true;
}

main.c文件:

#include<stdio.h>
#include<string.h>
#include"list.h"
#define COUNT 10

int main(void){
    List l;
    Item item;
    unsigned int count = 0;
    int i;

    initList(&l);
    strcpy(item.name, "su7");
    item.ratting = 8;
    for(i = 0; i < COUNT; i++)
        addItem(item, &l);

    count = listItemCount(&l);
    printf("count is %u.\n", count);
    return 0;
}
时间: 2024-10-16 15:34:57

ADT List 的实现的相关文章

Eclipse ADT中的logcat不显示解决方法

Eclipse ADT中的logcat不显示解决方法: 1.在Eclipse界面中找到DDMS,然后找到device选项卡,在这个选项卡中选择reset adb,如果不行尝试方法2: 2.不用关闭eclipse和模拟器,在Android SDK的tools目录下有个 ddms.bat 批处理文件,运行这个文件可以启动DDMS,同时这里面有logcat,可以显示信息: 3.以上方法都不行,最终杀手锏就是重启eclipse,重启模拟器,记得在任务管理器中关闭adb.exe,这时应该就可以了. 4.用

Eclipse+ADT+Android SDK 搭建安卓开发环境

要求 必备知识 windows 7 基本操作. 运行环境 windows 7 下载地址 环境下载 最近开接触Android(安卓)嵌入式开发,首要问题是搭建Andoid开发环境,由于本人用的是windows7的笔记本,也就只能到Windows中搭建Android 开发环境了! 就搭建环境都花了比较长的时间, 在各种版本之间折腾了比较久的时间, 装好后SDK包更新又是一个比较大的麻烦(天朝的网络大家懂的--).下面把我的安装过程和经验分享个大家!! 安装JDK 这里可以参考我之前写的一篇关于安装J

Android Studio的下载和安装教程(从ADT到AS)

之前一直使用的是Android development tools(简称ADT),后来说是google对ADT不再提供支持,然后一直在考虑是否把自己电脑换成Android Studio(简称AS),从ADT到AS这个过程自己觉得软件安装真的伤不起,端午节第二天和第三天(也是今天),终于完成了从ADT到AS的转 变,OK,我还有很多要学习的地方. 下面我来介绍一下ADT的转变成AS: 1.第一次安装完之后模拟器根本启动不了(就算你刚新建的模拟器,他还是不能在启动APP时候没有可用的模拟器),而且用

eclipse + adt离线安装

eclipse4.5 + adt23.0.4 离线安装. 由于google的一些站点被屏蔽了,导致无法在线下载安装adt. 所以只能手动下载adt包,然后eclipse离线安装了. 1. 下载eclipse http://www.eclipse.org/downloads/ 2. 下载 adt23.0.4 http://download.csdn.net/detail/seamless_yang/8266939 3. 打开eclipse,Help -> Install New Software.

解决ADT创建项目时出现appcompat_v7并且报错的问题

升级了SDK后,使用Eclipse新建Android项目的时候,伴随着产生了一个appcompat_v7项目,并且新建的项目和appcompat_v7都有报错,检查发现新建的项目是依赖于appcompat_v7的 网上搜了一下,说是appcompat_v7是为了让项目兼容低版本sdk而添加的类库项目,是用来被新项目引用的,从上面的图片看到,新建项目的时候,ADT自动帮选了比较低版本的一个Minimum Required SDk 从这个角度分析,如果新建项目的时候把Minimum Required

Eclipse(ADT)无法启动

启动Eclipse(ADT)时,报错[A Java RunTime Environment (JRE) or (JDK) must be avalible in order ... ... javaw.exe] 主要错在jdk的路径并不在此处. 1.找到javaw.exe所在的位置: 2.eclipse.ini 文件中修改-vm下的jdk路径.

eAndriod学习一:IDE、ADT、SDK、JDK

刚刚接触Android开发,一上来所有教程都是各种ADT.SDK的安装,给我整蒙了,这玩意是啥?怎么没有给说明的,就这么不重要吗?下面整理至网络: Android中IDE.ADT.SDK.JDK IED: Intelligent Development Environm的简称,智能开发环境,是一种开发工具.常用的IED是AndroidStudio,注意需要配置JDK[Visual Studio] JDK: Java的开发工具包.包括了Java运行环境.Java工具(java虚拟机,java编译器

【ADT】链表的基本C语言实现

什么是抽象数据类型?首先,这一概念是软件开发人员在力求编写的代码健壮.易维护且可以复用的过程中产生的.英文是AbstractData Type.有人将其比作"抽象"的墙壁,"它将接口和实现明确分开,所以用户只看到接口,因此不需要参与实现."构建者则着力实现ADT接口.ADT成为了双方的契约,这使得代码更容易维护. 接口:接口是把公共的方法和属性组合起来以封装特定功能的一个集合. 创建linked list.h头文件 1 #ifndef LIST_H_ 2 #defi

ubuntu 安装eclipse,adt,android sdk,离线

1.安装jdk 环境变量 $ sudo gedit ~/.bashrc export JAVA_HOME=/usr/local/jdk1.8.0_65export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH sudo update-alternatives --install /usr/bin/java java /

; AutoHotkey全自动安装环境设置和测试JAVA+Eclipas+Android+JRE+JDK+SDK+ADT+Android模拟器+Android Virtual Device Manager+NDK+Studio+Doc+Help+Android Application Project编程调试windows环境[草稿版] DetectHiddenWindows,On SetTitl

; AutoHotkey全自动安装环境设置和测试JAVA+Eclipas+Android+JRE+JDK+SDK+ADT+Android模拟器+Android Virtual Device Manager+NDK+Studio+Doc+Help+Android Application Project编程调试windows环境[草稿版] DetectHiddenWindows,OnSetTitleMatchMode,2 ; 激活窗口并单击按钮IfWinExistActiveControlClick