C语言实现顺序表
来源:互联网 发布:linux ftp知识总结 编辑:程序博客网 时间:2024/05/17 09:27
C语言实现的顺序表完整代码。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#include <assert.h>#define STRLEN 10#define SIZE 4#define INCREMENT 2typedef struct StudentRecord{ int id; char name[STRLEN]; char sex[STRLEN];} StudentRecord;typedef struct SqlList{ int length;//顺序表的长度 int size;//数组的长度 StudentRecord* base;} SqlList;void setStudentRecord(StudentRecord* record, int id, char* name, char* sex);void printRecord(StudentRecord* record);void initSqlList(SqlList* list);void destorySqlList(SqlList* list);bool isEmpty(SqlList list);int length(SqlList list);void insertSqlList(SqlList* list, int index, StudentRecord record);typedef void function(StudentRecord* record);void listTraverse(SqlList* list, function visit);void deleteSqlList(SqlList* list, int index);int main(){ StudentRecord s0; StudentRecord s1; StudentRecord s2; StudentRecord s3; StudentRecord s4; StudentRecord s5; StudentRecord s6; StudentRecord s7; setStudentRecord(&s0,101,"张三","男"); setStudentRecord(&s1,102,"Marry","Female"); setStudentRecord(&s2,103,"Bob","Male"); setStudentRecord(&s3,104,"Tim","Male"); setStudentRecord(&s4,105,"Sony","Male"); setStudentRecord(&s5,106,"Bob","Male"); setStudentRecord(&s6,107,"Tim","Male"); setStudentRecord(&s7,108,"Sony","Male"); SqlList list; initSqlList(&list); insertSqlList(&list,0,s0); insertSqlList(&list,0,s1); insertSqlList(&list,0,s2); insertSqlList(&list,0,s3); insertSqlList(&list,0,s4); insertSqlList(&list,0,s5); insertSqlList(&list,0,s6); insertSqlList(&list,0,s7); printf("表长为:%d\n",length(list)); listTraverse(&list,printRecord); deleteSqlList(&list, 3); printf("表长为:%d\n",length(list)); listTraverse(&list,printRecord); destorySqlList(&list); printf("表长为:%d\n",length(list)); return 0;}void setStudentRecord(StudentRecord* record, int id, char*name,char* sex){ record->id = id; strcpy(record->name,name); strcpy(record->sex,sex);}void printRecord(StudentRecord* record){ printf("%d,%s,%s\n",record->id,record->name,record->sex);}void initSqlList(SqlList* list){ list->size = SIZE; list->length = 0; list->base = (StudentRecord*)malloc(sizeof(StudentRecord)*list->size);}void destorySqlList(SqlList* list){ free(list); list->size = 0; list->length = 0; list->base = NULL;}bool isEmpty(SqlList list){ if(list.length == 0) { return true; } else { return false; }}int length(SqlList list){ return list.length;}void insertSqlList(SqlList* list, int index, StudentRecord record){ assert(index>=0 && index<=list->length);//判断需要插入的位置是否合法 if(list->size == list->length) { list->size += INCREMENT;//如果表长和数组的长度相等,则需要扩容 list->base = realloc(list->base,sizeof(StudentRecord)*list->size); } for(int i=list->length-1; i>=index; i--) { list->base[i+1] = list->base[i];//将插入位置之后的元素依次向后推移 } list->base[index] = record; list->length++;}void deleteSqlList(SqlList* list, int index){ assert(index>=0 && index<=list->length);//判断需要删除的元素的位置是否合法 for(int i=index; i<=list->length; i++) { list->base[i] = list->base[i+1];//将带删除位置以后的元素一次向前移动 } list->length--;}void listTraverse(SqlList* list, function visit) //传入的是一个函数指针,方便以后同类的打印函数的修改{ for(int i=0; i<list->length; i++) { visit(&list->base[i]); }}参考地址:http://www.bilibili.com/video/av2965301/
0 0
- C语言实现顺序表
- 顺序表c语言实现
- c语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- c语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- C语言实现顺序表
- 数字图像处理
- PHP结合Ajax实现登录验证的Demo
- POJO对象(一)简介
- QPushButton去掉选中状态的虚线框(焦点框)
- Android Fragment 真正的完全解析(上)
- C语言实现顺序表
- fresh air项目记录1
- CocoaPod常用命令
- 注意,使用友盟社会化组件的微博SSO功能,需要按照文档要求在xcode设置url scheme!
- JDBC-数据库连接字符串
- 链路状态和距离矢量路由协议的不同
- shell 学习
- 40. Combination Sum II LeetCode
- 转载的一篇关于cap理论的不错的文章