完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
001一、顺序表
002 使用数组实现 003 优点:查找快,可以使用下标定位 004 缺点:增加、删除慢,之后的所有元素需要移动 005 006 结构体定义方式1: 007 需要malloc创建数组 008 typedef struct seqlist{ 009 //数组指针,使用malloc动态创建堆上的数组 010 data_t *buf; 011 //数组长度 012 int maxLen; 013 //list最后元素的位置 014 int last; 015 }seqlist_t; 016 结构体定义方式2: 017 这种方式可以使用定义变量的方式创建结构体,分配在栈上 018 也可以用malloc创建,分配在堆上 019 在malloc创建结构体或者定义变量时,系统根据结构体内元素的顺序,自动赋值对应的内存地址以初始化 020 021 typedef struct seqlist{ 022 data_t buf[N]; 023 int maxLen; 024 int last; 025 }seqlist_t; 026 027 常用方法: 028 //创建 029 seqlist_t *create_seqList(int size){ 030 seqlist_t *l = (seqlist_t *)malloc(sizeof(seqlist_t)); 031 l->buf = (data_t *)malloc(sizeof(data_t) * size); 032 l->maxLen = size; 033 l->last = -1; 034 } 035 //清空 036 void clear_seqlist(seqlist_t *l); 037 //判满 038 int is_full_seqlist(seqlist_t *l); 039 //判空 040 int is_empty_seqlist(seqlist_t *l); 041 //打印 042 void show_seqlist(seqlist_t *l); 043 //插入 044 int insert_seqlist(seqlist_t *l, int pos, data_t num); 045 //删除 046 data_t delete_seqlist(seqlist_t *l, int pos); 047 //定位 048 int index_of_seqlist(seqlist_t *l, data_t target); 049 //反转 050 void reverse_seqlist(seqlist_t *l){ 051 int i = 0; 052 while(i < (l->last + 1)/2){ 053 l->buf ^= l->buf[l->last - i]; 054 l->buf[l->last - i] ^= l->buf; 055 l->buf ^= l->buf[l->last - i]; 056 i++; 057 } 058 } 059 060二、链表 061 使用指针将各个节点连接实现 062 优点:增加、删除快,直接改变指针的指向即可 063 缺点:查找慢,只能遍历 064 065 结构体定义方式: 066 typedef struct link_node{ 067 //节点数据 068 data_t data; 069 //下个节点指针 070 struct link_node * next; 071 }linknode_t; 072 073 常用方法: 074 //创建 075 linklist_t create_linklist(){ 076 //创建链表头,不存放数据 077 linklist_t l = (linklist_t)malloc(sizeof(linklist_t)); 078 } 079 080 //判空 081 int is_empty_linklist(linklist_t l); 082 //打印 083 void show_linklist(linklist_t l); 084 //插入 085 int insert_linklist(linklist_t l, int pos, data_t data){ 086 //malloc创建节点 087 } 088 //删除 089 int delete_linklist_node(linklist_t l, data_t data){ 090 //解链 091 //free 092 } 093 //反转 094 void reverse_linklist(linklist_t l){ 095 linknode_t *p = l->next; 096 l->next = NULL; 097 linknode_t *q; 098 099 while(p){ 100 q = p->next; 101 p->next = l->next; 102 l->next = p; 103 p = q; 104 } 105 } |
|
相关推荐
1个回答
|
|
华清的人无处不在,真像________!
|
|
|
|
只有小组成员才能发言,加入小组>>
771 浏览 0 评论
1146 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1054浏览 3评论
189浏览 2评论
453浏览 2评论
364浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
449浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 14:32 , Processed in 1.463420 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号