当前位置:网站首页>Sequence table (implemented in C language)
Sequence table (implemented in C language)
2022-07-03 13:33:00 【fitpolo】
seq_list.c
#include "seq_list.h"
seq_list* seq_list_create(int capacity)
{
seq_list *result=0;
result = malloc( sizeof(seq_list) );
if (result ==0)
{
printf("malloc error\r\n");
return 0;
}
result->capacity = capacity;
result->len = 0;
result->node = malloc(sizeof(seq_list_node) * capacity);
if (result->node == 0)
{
free(result);
printf("malloc error\r\n");
return 0;
}
return result;
}
void seq_list_destroy(seq_list *list)
{
free(list);
}
void seq_list_clear(seq_list *list)
{
list->len = 0;
}
int seq_list_length(seq_list *list)
{
return list->len;
}
int seq_list_capacity(seq_list *list)
{
return list->capacity;
}
int seq_list_insert(seq_list *list,seq_list_node *node,int pos)
{
int i;
if (list->capacity <(list->len+1))
{
printf("seq_list_insert -1,pos:%d,node:0x%x\n",pos,(unsigned int)node);
return -1;
}
if (list->len <= pos)
{
pos = list->len;
}
for (i=list->len; i>pos; i--)
{
list->node[i] = list->node[i-1];
}
list->node[pos] = (seq_list_node)node;// It contains the address
list->len++;
return i;
}
seq_list_node *seq_list_get(seq_list *list,int pos)
{
seq_list_node *result=0;
if (pos >= list->capacity)
return 0;
if (pos >= list->len)
return 0;
result = (seq_list_node*)list->node[pos];
return result;
}
seq_list_node *seq_list_delete(seq_list *list,int pos)
{
int i=0;
if (pos >= list->capacity)
return 0;
if (pos >= list->len)
return 0;
if (list->len == 0)
return 0;
for (i=pos; i<(list->len-1); i++)// 4 0 1 2 3
{
list->node[i] = list->node[i+1];
}
list->len--;
return 0;
}
void seq_list_printf(seq_list *list)
{
int i;
seq_list_node tmp;
seq_list_node *pdata;
printf("capacity:%d-len:%d-\n",list->capacity,list->len);
for (i=0; i<list->len; i++)
{
tmp = list->node[i];
pdata = (seq_list_node*)tmp;
printf("0x%x-%d\n",tmp,pdata[0]);
}
printf("\n");
}
seq_list.h
#ifndef _SEQLIST_H_
#define _SEQLIST_H_
#include "stdio.h"
#include "stdlib.h"
typedef unsigned int seq_list_node;
typedef struct _tag_seq_list seq_list;
struct _tag_seq_list
{
int capacity;
int len;
seq_list_node *node;
};
seq_list* seq_list_create(int capacity);
void seq_list_destroy(seq_list *list);
void seq_list_clear(seq_list *list);
int seq_list_length(seq_list *list);
int seq_list_capacity(seq_list *list);
int seq_list_insert(seq_list *list,seq_list_node *node,int pos);
seq_list_node *seq_list_get(seq_list *list,int pos);
seq_list_node *seq_list_delete(seq_list *list,int pos);
void seq_list_printf(seq_list *list);
#endif
Test code
#include "seq_list.h"
#include "stdio.h"
#include "stdint.h"
int main(void)
{
uint8_t i;
int tmp[11];
seq_list *head;
printf("hello \r\n");
head = seq_list_create(10);
printf("len:%d,capacity:%d\n",head->len,head->capacity);
for (i=0; i<11; i++)
{
tmp[i] = i+1;
}
seq_list_insert(head,(seq_list_node*)&tmp[0],0);
seq_list_insert(head,(seq_list_node*)&tmp[1],0);
seq_list_insert(head,(seq_list_node*)&tmp[2],0);
seq_list_insert(head,(seq_list_node*)&tmp[3],0);
seq_list_insert(head,(seq_list_node*)&tmp[4],0);
seq_list_insert(head,(seq_list_node*)&tmp[5],0);
seq_list_insert(head,(seq_list_node*)&tmp[6],0);
seq_list_insert(head,(seq_list_node*)&tmp[7],0);
seq_list_insert(head,(seq_list_node*)&tmp[8],0);
seq_list_insert(head,(seq_list_node*)&tmp[9],0);
//
seq_list_printf(head);
printf("seq list capacity:%d-len:%d\n",seq_list_capacity(head),seq_list_length(head));
printf("delete pos:%d\n",8);
seq_list_delete(head,8);
seq_list_printf(head);
printf("delete pos:%d\n",0);
seq_list_delete(head,0);
seq_list_printf(head);
printf("seq list capacity:%d-len:%d\n",seq_list_capacity(head),seq_list_length(head));
while(1)
{
}
}
边栏推荐
- Realize the recognition and training of CNN images, and process the cifar10 data set and other methods through the tensorflow framework
- AI scores 81 in high scores. Netizens: AI model can't avoid "internal examination"!
- 这本数学书AI圈都在转,资深ML研究员历时7年之作,免费电子版可看
- 阿南的疑惑
- Setting up remote links to MySQL on Linux
- Error running 'application' in idea running: the solution of command line is too long
- MapReduce implements matrix multiplication - implementation code
- This math book, which has been written by senior ml researchers for 7 years, is available in free electronic version
- ThreadPoolExecutor realizes multi-threaded concurrency and obtains the return value (elegant and concise way)
- MySQL
猜你喜欢
stm32和电机开发(从mcu到架构设计)
Error running 'application' in idea running: the solution of command line is too long
Flink SQL knows why (XIV): the way to optimize the performance of dimension table join (Part 1) with source code
The 35 required questions in MySQL interview are illustrated, which is too easy to understand
SQL Injection (POST/Search)
User and group command exercises
18W word Flink SQL God Road manual, born in the sky
logback日志的整理
PowerPoint tutorial, how to save a presentation as a video in PowerPoint?
[quantitative trading] permanent portfolio, turtle trading rules reading, back testing and discussion
随机推荐
Flutter动态化 | Fair 2.5.0 新版本特性
Will Huawei be the next one to fall
R语言gt包和gtExtras包优雅地、漂亮地显示表格数据:nflreadr包以及gtExtras包的gt_plt_winloss函数可视化多个分组的输赢值以及内联图(inline plot)
Brief analysis of tensorboard visual processing cases
Elk note 24 -- replace logstash consumption log with gohangout
Oracle memory management
Universal dividend source code, supports the dividend of any B on the BSC
Annotation and reflection
已解决TypeError: Argument ‘parser‘ has incorrect type (expected lxml.etree._BaseParser, got type)
Unity EmbeddedBrowser浏览器插件事件通讯
常见的几种最优化方法Matlab原理和深度分析
Kivy教程之 如何通过字符串方式载入kv文件设计界面(教程含源码)
8 Queen question
Typeerror resolved: argument 'parser' has incorrect type (expected lxml.etree.\u baseparser, got type)
双链笔记 RemNote 综合评测:快速输入、PDF 阅读、间隔重复/记忆
Tencent cloud tdsql database delivery and operation and maintenance Junior Engineer - some questions of Tencent cloud cloudlite certification (TCA) examination
HALCON联合C#检测表面缺陷——HALCON例程autobahn
JSON serialization case summary
Realize the recognition and training of CNN images, and process the cifar10 data set and other methods through the tensorflow framework
Libuv库 - 设计概述(中文版)