顺序表、链表
来源:互联网 发布:大智慧mac版好用吗 编辑:程序博客网 时间:2024/05/16 11:02
先写下顺序表和链表的代码。
=======顺序表======#include <stdio.h>#include <stdlib.h>typedef struct _seqlist_ { int * const data; int clen; int tlen;}seqlist_t;seqlist_t *list_init(int len);int list_destroy(seqlist_t *list);int list_insert(seqlist_t *list, int value);int list_show(seqlist_t *list);int list_delete(seqlist_t *list, int obj);int list_modify(seqlist_t *list, int old, int new);int list_search(seqlist_t *list, int obj);int list_getlen(seqlist_t *list);int main(){ seqlist_t *list; int value = 100; list = list_init(10); puts("insert:"); while (0 == list_insert(list, value)) value += 100; list_show(list);#if 0 list_delete(list, 1500); list_show(list); puts("modify:"); list_modify(list, 1400, 3000); list_show(list); puts("search:"); if (list_search(list, 1400)) puts("yes"); else puts("no");#endif printf("Clen: %d\n", list_getlen(list)); list_destroy(list); return 0;}seqlist_t *list_init(int len){ seqlist_t *list = NULL; list = malloc(sizeof(seqlist_t)); *(int **)&list->data = malloc(sizeof(int) * len);////////list->data = malloc(sizeof(int )* len); list->tlen = len; list->clen = 0; return list;}int list_destroy(seqlist_t *list){ free(list->data); free(list); return 0;}int list_insert(seqlist_t *list, int value){ if (list->clen >= list->tlen) return -1; list->data[list->clen ++] = value; return 0;}int list_show(seqlist_t *list){ int i; printf("Clen: %d\tTlen: %d\n", list->clen, list->tlen); for (i = 0; i < list->clen; i++) printf("%5d", list->data[i]); putchar('\n'); return 0;}int list_delete(seqlist_t *list, int obj){ int i; for (i = 0; i < list->clen; i++) { if (obj == list->data[i]) break; } if (i == list->clen) return -1; for (; i + 1 < list->clen; i++) list->data[i] = list->data[i+1]; list->clen--; return 0;}int list_modify(seqlist_t *list, int old, int new){ int i; for (i = 0; i < list->clen; i++) { if (old == list->data[i]) break; } if (i >= list->clen) return -1; list->data[i] = new; return 0;}int list_search(seqlist_t *list, int obj){ int i; for (i = 0; i < list->clen; i ++) { if (obj == list->data[i]) return 1; } return 0;}int list_getlen(seqlist_t *list){ return list->clen;}==========链表=========#include <stdio.h>#include <stdlib.h>typedef struct _linknode_ { int data; struct _linknode_ *next;}linknode_t;typedef struct _linklist_ { linknode_t *head; int clen; int tlen;}linklist_t;linknode_t *create_linknode(int value);linklist_t *list_init(int len);int list_insert(linklist_t *list, int value);int main(){ linklist_t *list = NULL; int value = 100; list = list_init(10); while (0 == list_insert(list, value)) value += 100; list_show(list);#if 0 list_delete(); list_modify(); list_search(); list_getlen(); list_destroy();#endif return 0;}linklist_t *list_init(int len){ linklist_t *list = NULL; list = malloc(sizeof(linklist_t)); list->head = NULL; list->clen = 0; list->tlen = len; return list;}int list_insert(linklist_t *list, int value){ linknode_t *new = NULL; if (list->clen >= list->tlen) return -1; new = create_linknode(value); new->next = list->head; list->head = new; list->clen++; return 0;}linknode_t *create_linknode(int value){ linknode_t *node = NULL; node = malloc(sizeof(linknode_t)); node->next = NULL; node->data = value; return node;}int list_show(linklist_t *list){ linknode_t *p = list->head->next; while (NULL != p) { printf("%5d", p->data); p = p->next; } putchar('\n'); return 0;}int list_destroy(linklist_t *list){ linknode_t *p = list->head; linknode_t *tmp = NULL; while (NULL != p) { tmp = p; p = p->next; free(tmp); } free(list); return 0;}int list_delete(linklist_t *list, int obj){ linknode_t *p = list->head; linknode_t *tmp = NULL; while (NULL != p->next && p->next->data != obj) p = p->next; if (NULL == p->next) return -1; tmp = p->next; p->next = tmp->next; free(tmp); list->clen--; return 0;}linknode_t *list_search(linklist_t *list, int obj){ linknode_t *p = list->head->next; while (NULL != p && p->data != obj) p = p->next; return p;}int list_modify(linklist_t *list, int old, int new){ linknode_t *p = list->head->next; while (NULL != p && p->data != old) p = p->next; if (NULL == p) return -1; p->data = new; return 0;}int list_getlen(linklist_t *list){ return list->clen;}int list_reverse(linklist_t *list){ linknode_t *p = list->head->next; linknode_t *tmp = NULL; list->head->next = NULL; while (NULL != p) { tmp = p; p = p->next; tmp->next = list->head->next; list->head->next = tmp; } return 0;}
0 0
- 顺序表(链表)
- 顺序表、链表
- 顺序表PK链表
- 顺序表,链表,堆栈,串
- 链表,顺序表,链队,链栈,顺序队,顺序栈,二叉树的基本操作函数
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- JAVA判断某个IP是否在指定IP段内
- 线性结构------共享栈
- TitleBar 自定义布局
- 请告诉美工Android适配时切图要按标准来
- SVN 分支合并踩坑指南
- 顺序表、链表
- 读写锁pthread_rwlock_t的使用
- edittext光标位置
- s5pv210 android hdmi与LCD异步显示之fb2多线程操作驱动修改
- org.hibernate.HibernateException: No CurrentSessionContext configured!
- IOS安全–了解Mach-o文件结构
- 工业串口和网络软件通讯平台-快速构建自己的平台和开发设备
- Linux内核中双向链表的经典实现
- React-Native学习指南