1、 初始化顺序表,顺序表利用数组作为基础,其特点是需要事先获得全部元素空间,因此本函数的主要功能就是向系统申请足够的空间作为顺序表的存储空间。涉及的系统函数为:malloc()* 此外,良好的习惯是将空间内的各项数据进行适当的初始化* Input: NONE* Output:* return: 类型:table_t *,返回顺序表的结构指针* Created by : * Created Date :*-* Modified by :* Modified Date:*/table_t * init_table( ) table_t * t; t=(table_t *)malloc(sizeof(
2、table_t); t-length = 0; return t; free_table() 释放顺序表空间* 当程序结束时会通过本函数来释放通过malloc获得的顺序表空间 顺序表指针void*-void free_table(table_t * t) free(t); get_table() 查询顺序表* 查询顺序表中第i个元素* table_t * table;* int index; 查询位置,即第i个元素* element_t * elem; 元素域指针,用来存放被查询到的元素内容,* (注意,需要将元素全部内容拷贝到该指针所记录的空间中,即,使用memcpy()int,返回查询是否
3、成功,为0表示找到指定元素,为-1表示没有找到,一般是因为* index指示的位置超出了顺序表的范围int get_table(table_t * table,int index, element_t * elem) /判断index是否超出顺序表范围 if(index table-length) return -1; /复制元素内容到指定空间中; memcpy(elem,&(table-dataindex-1),sizeof(element_t);/error return 0; add_table() 将指定元素放入到顺序表的末尾* element_t data; 待放入的元素 添加新元素
4、后的顺序表指针int; 为-1表示放入失败,一般是因为顺序表已经放满,为0表示正确放入int add_table(table_t * table, element_t data)datatable-length = data;length +;return 0; insert_table() 将指定元素插入到顺序表的指定位置之前* int location; 插入位置,语义是:第X个元素前,当location大于链表元素总数时,该元素* 将插入到表尾。 插入新元素后的顺序表指针 为-1表示插入失败,一般是因为顺序表已经放满或者插入位置不正确, 为0表示正确插入int insert_table(
5、table_t * table, element_t data, int location) location=location-1; if(locationtable-length) table-length+1=data; else int j; for(j=table-length-1;j=location;j-) table-dataj+1=table-dataj;datalocation=data;length=table-length+1; insert_table_by_order() 将指定元素按照学号从小到大顺序插入到顺序表中int insert_table_by_order
6、(table_t * table, element_t data)int t,i; t = table-length; if(t = MAX_TABLE_SIZE) i = 0; while(table-datai.stuID datai.stuName) if(i = MAX_TABLE_SIZE) return -1; for(i;idatai+1;length-=1; delete_table_below() 删除顺序表中总分小于某个指定值的所有元素,本算法的特点是* 希望一趟能在顺序表中删除多个元素* int x; 删除范围,即被删除的元素总分小于这个值 删除元素后的顺序表指针 voi
7、d;void delete_table_below(table_t * table, int x) int tMAX_TABLE_SIZE; int i,j; j=0; for(i=0; if(xdatai.overall) tj = i; j+; for(j-=1;=0;j-) for(i=tj;length -=1; return NULL ;七、 程序流程说明通过补全函数实现对顺序表的各种操作。八、 测试数据 输入:创建顺序表应输出(上机前自己分析的结果):成功创建插入:插入到6号之前成功插入顺序表删除1号元素成功删除1号元素删除总分80以下的元素成功删除总分80以下的元素九、 上机时遇到的问题 1 问题现象:找不到文件“stdafx.h”原因:编译错误解决办法: 删除编译产生的debug文件夹重新编译2 问题现象:编译时提示return出现错误0与NULL的不同 将return 0;改成return NULL;一十、 实际运行结果一十一、 小结 体会 1.在补充函数时对C语言的学习不够,导致许多语法错误,应该加强对C语言的基础训练。2.对顺序表的结构和各种操作的模式不熟悉,导致补充函数时没有思路,此后应该上课认真听讲。3.应该加强与同学的互相交流,分工合作,提高效率互相学习。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1