• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言顺序表实现代码排错

C语言顺序表实现代码排错

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了网络排错,su排错工具在哪里,草图大师排错工具,mysql排错指南 pdf,排错等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

今天本来想写段代码练练手,想法挺好结果,栽了个大跟头,在这个错误上徘徊了4个小时才解决,现在分享出来,给大家提个醒,先贴上代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXSIZE     50
#define OK          0
#define ERR         -1

typedef int elemtype;

typedef struct {
    elemtype data[MAXSIZE];
    int      len;
}sqlist;

int init_list(sqlist *L);
int destroy_list(sqlist *L);
int list_empty(sqlist L);
int list_length(sqlist L);
int disp_list(sqlist L);
int get_elem(sqlist L, int i, elemtype *e);
int local_elem(sqlist L, elemtype e);
int list_insert(sqlist *L, int i, elemtype e);
int list_delete(sqlist *L, int i, elemtype *e);

#endif


/**************************************************
 * 文件名称:sqlist.c
 * 文件描述:线性表顺序存储的实现
 * 文件作者:by Wang.J,in 2013.11.16
 * 文件版本:1.0
 * 修改记录:
***************************************************/
#include "sqlist.h"

#if 0
#define ERR_NONE_ERROR        0
#define ERR_FUNC_EXEC         1
#define ERR_FILE_OPEN         2

char *error_msg[] = {
    /* 0  */    "成功执行,无错误",
    /* 1  */    "函数执行错误",
    /* 2  */    "文件打开错误",
};
int my_errno = 0;
#endif

int main(void)
{
    int ret = 0;
    int i = 0;
    sqlist slist;
    elemtype e;

    memset(&slist, 0, sizeof(slist));
    printf("length:%d\n", slist.len);
    ret = init_list(&slist);
    if (OK != ret)
        return -1;

    ret = list_empty(slist);
    printf("长度:%d\n", slist.len);
    if (OK == ret)
        printf("顺序表为空\n");
    if (ERR == ret)
        printf("顺序表不为空\n");

    for (i = 0; i < 10; i++) {
        e = (elemtype)i;
        list_insert(&slist, i, e);
    }
    printf("插入数据\n");

    ret = list_empty(slist);
    if (OK == ret)
        printf("顺序表为空\n");
    if (ERR == ret)
        printf("顺序表不为空\n");

    printf("after length%d\n", list_length(slist));

    disp_list(slist);

    destroy_list(&slist);

    return 0;
}

/*=====================================================
 * 函数名称:init_list
 * 函数功能:初始化一个顺序表,创建一个空的顺序表
 * 函数参数:sqlist *L   负责返回一个创建好的顺序表,如果创建
            失败则返回NULL
 * 返 回 值:成功返回0并通过指针返回一个创建好的空表
            失败返回-1指针返回NULL
 * 创 建 人:by Wang.J,in 2013.11.16
 * 修改记录:
======================================================*/
int init_list(sqlist *L)
{
    L = (sqlist *)malloc(sizeof(sqlist));

    if (NULL == L) {
        L = NULL;
        return -1;
    }

    L->len = 0;

    return 0;
}

/*=====================================================
 * 函数名称:destroy_list
 * 函数功能:销毁创建好的顺序表,释放顺序表的空间
 * 函数参数:sqlist *L,已经存在的线性表
 * 返 回 值:成功     0
            失败     -1
            通常free不会失败,其实这个函数可以直接使用void
            的,这里只是自己顺手写的,看到代码就知道不会返回0
 * 创 建 人:by Wang.J,in 2013.11.16
 * 修改记录:
======================================================*/
int destroy_list(sqlist *L)
{
    free(L);

    return 0;
}

/*=====================================================
 * 函数名称:list_empty
 * 函数功能:判断sqlist顺序表是否为空
 * 函数参数:sqlist L,已存在的线性表
 * 返 回 值:空     0
            不空   -1
 * 创 建 人:by Wang.J,in 2013.11.16
 * 修改记录:
======================================================*/
int list_empty(sqlist L)
{
    if (0 == L.len)
        return 0;

    return -1;
}

/*=====================================================
 * 函数名称:list_length
 * 函数功能:取得线性表的长度,返回顺序表中元素个数
 * 函数参数:sqlist L,已经存在的线性表
 * 返 回 值:L的长度
 * 创 建 人:by Wang.J,in 2013.11.16
 * 修改记录:
======================================================*/
int list_length(sqlist L)
{
    return L.len;
}

/*=====================================================
 * 函数名称:disp_list
 * 函数功能:显示顺序表中所有的元素
 * 函数参数:sqlist L,已经存在的线性表
 * 返 回 值:成功     0
            失败     -1
 * 创 建 人:by Wang.J,in 2013.11.16
 * 修改记录:
======================================================*/
int disp_list(sqlist L)
{
    int i = 0;

    if (0 >= L.len)
        return -1;

    for (i = 0; i < L.len; i++)
        printf("%d\t", L.data[i]);
    /*
     * 这个地方我自己是有异议的,首先你可能不知道输出的类型为
     * %d,再就是求长度是使用list_length函数还是使用L.len方式,
     * list_length是函数调用有着函数调用的额外开销,在PC上这点
     * 开销不算什么,但是在嵌入式系统就不得不考虑这种开销了,
     * 这基本上算是良好的移植性和代码效率之间的问题,为了提高
     * 移植性可以多添加几层抽象层,实现各种判断.除非是极其庞大
     * 的项目或是为了匹配各种这样的设备,我认为像代码定义类型这
     * 种小事,团

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言顺序表实现代码排错

相关文章

  • 2017-05-28C++设计模式之观察者模式
  • 2017-05-28C++实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
  • 2017-05-28排列组合总结:将结果进行输出的实现方法
  • 2017-05-28使用VS2010创建MFC ActiveX工程项目
  • 2017-05-28C++概念重载、覆盖、隐藏的使用说明
  • 2017-05-28Qt定时器和随机数详解
  • 2017-05-28C++实现将一个字符串中的字符替换成另一个字符串的方法
  • 2017-05-28用C++实现strcpy(),返回一个char*类型的深入分析
  • 2017-05-28基于字符串移位包含的问题详解
  • 2017-05-28C++实现十六进制字符串转换为十进制整数的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 奇怪的C语言特性
    • 解析shell排序的实现代码
    • 深入讲解C++数据类型转换的相关函数的知识
    • 详解Linux的SOCKET编程
    • C语言中一些将字符串转换为数字的函数小结
    • 解决在Mac下直接解压C++静态库出现的问题
    • C语言 栈的表示和实现详细介绍
    • Python HTTP服务搭建显示本地文件
    • VC中SendMessage和PostMessage的区别
    • 深入Main函数中的参数argc,argv的使用详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有