14-链表用法_案例代码
来源:互联网 发布:js 局部打印pdf 编辑:程序博客网 时间:2024/05/24 06:00
链表
代码 1 :
#include <stdio.h>typedef struct node{ int data[10]; int newdata[0];}list_t;int main(int argc, const char *argv[]){ list_t list; printf("%d\n",sizeof(list_t)); printf("%p\n",&list); printf("%p\n",list.data); printf("%p\n",list.newdata); int i; for(i=0;i<=9;i++) { list.data[i]=i+1; } printf("%d\n",list.newdata[-1]); return 0;}
代码 2 :
#include <stdio.h>#include <stdlib.h>//define typedef//预编译的时候文字替换typedef struct node{ int *data; int last; int size;}list_t; // list_t --> struct node//驼峰标记法 struct node --> NODE ; NODE//不建议使用 编译器可能过不去,容易混淆//创建list_t* create_list(int size){ if(size<=0) return NULL; list_t* list=malloc(sizeof(list_t)); //堆区创建一个连续空间,返回首地址给list //(list_t* )malloc(sizeof(list_t)); //windows 要求类型匹配 list->last=-1; list->size=size; list->data=malloc(sizeof(int)*size); // -> .区别 // 结构体变量 访问成员 用. // 指针 -> return list;}//判满int isfull(list_t* list){ if(list==NULL) return 0; // NULL --> (void *)0 零地址 保护着的,用来做比较 // 绝对不能用此地址访问成员变量和赋值 return list->last==list->size-1;}//判空int isempty(list_t* list){ if(list==NULL) return 0; return list->last==-1;}//增int insert_head_list(list_t* list,int data){ //判满 if(list==NULL||isfull(list)) return -1; int i; for(i=list->last;i>=0;i--) { list->data[i+1]=list->data[i]; } //赋值 list->data[0]=data; list->last++; return 0;}//删int delete_head_list(list_t* list){ if(list==NULL||isempty(list)) return -1; int i; for(i=0;i<list->last;i++) { list->data[i]=list->data[i+1]; } list->last--; return 0;}//查int locate_list(list_t* list,int data){ if(list==NULL||isempty(list)) return -1; int i; for(i=0;i<=list->last;i++) { if(list->data[i]==data) return i; } return -1;}//改int change_index_list(list_t* list,int index,int data){ if(list==NULL||isempty(list)||index<0||index>list->last) return -1; list->data[index]=data; return 0;}//指定位置插入int insert_index_list(list_t* list,int index,int data){ //判满 if(list==NULL||isfull(list)||index<0||index>list->last+1) return -1; int i; for(i=list->last;i>=index;i--) { list->data[i+1]=list->data[i]; } //赋值 list->data[index]=data; list->last++; return 0;}//指定位置删除int delete_index_list(list_t* list,int index){ if(list==NULL||isempty(list)||index<0||index>list->last) return -1; int i; for(i=index;i<list->last;i++) { list->data[i]=list->data[i+1]; } list->last--; return 0;}//打印int print_list(list_t* list){ if(list==NULL||isempty(list)) return -1; int i; for(i=0;i<=list->last;i++) { printf("%3d ",list->data[i]); } printf("\n"); return 0;}//逆打印int re_print_list(list_t* list){ if(list==NULL||isempty(list)) return -1; int i; for(i=list->last;i>=0;i--) { printf("%3d ",list->data[i]); } printf("\n"); return 0;}//清空int clear_list(list_t* list){ if(list==NULL) return -1; list->last=-1; return 0;}int length_list(list_t* list){ if(list==NULL||isempty(list)) return 0; return list->last+1;}//销毁int destory_list(list_t* list){ if(list==NULL) return -1; free(list); return 0;}int main(int argc, const char *argv[]){ list_t* list=create_list(30); int i; for(i=1;i<=15;i++) { if(insert_head_list(list,i)==0) print_list(list); } change_index_list(list,locate_list(list,15),250); insert_index_list(list,locate_list(list,13),230); print_list(list); delete_index_list(list,locate_list(list,230)); print_list(list); printf("length_list:%d\n",length_list(list)); clear_list(list); printf("length_list:%d\n",length_list(list)); destory_list(list); list=NULL; //free以后,malloc的空间理论上不可再使用,可能会出现野指针,赋值NULL是好习惯 return 0;}
0 0
- 14-链表用法_案例代码
- 15-双向链表用法_案例代码
- 16-栈的几种用法_案例代码
- CSS各种滤镜代码解释用法案例
- 14 ListFragment 代码案例
- C代码_链表精粹
- 案例代码
- STL案例_演讲比赛
- STL案例_演讲比赛
- 【郝斌数据结构自学笔记】14-15_链表的重要性_typedef的用法
- _ _ add 用法
- 笔记 03_传智播客hibernate教程_hibernate入门案例的代码优化
- 面向对象_猫狗案例加入跳高功能代码实现
- 面向对象_老师学生案例加入抽烟功能分析及代码实现
- 常见对象_在大串中查找小串出现的次数案例代码实现
- 常见对象_在大串中查找小串出现的次数案例代码优化
- 集合框架_统计字符串中每个字符出现的次数案例代码实现
- 创建scott的案例表代码
- Android面试题整理
- 11-linux-c基础2
- 基于Socket编程的远程控制PC音乐播放器App(一)
- 12-Shell脚本_练习
- 13-Makefile基本语法
- 14-链表用法_案例代码
- 数位dp小练
- POJ2236并查集
- 15-双向链表用法_案例代码
- 使用Python的Requests库进行web接口测试
- 16-栈的几种用法_案例代码
- 面试分享:挑战25K/月的android 高级开发工程师
- 17-tree_queue_linkstack_linkqueue_代码案例
- Android demo-->学生选课系统,使用Sqlite存储数据