当前位置:网站首页>顺序表(C语言实现)
顺序表(C语言实现)
2022-07-03 12:58: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;//里面装的是地址
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
测试代码
#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)
{
}
}
边栏推荐
- Useful blog links
- Flutter动态化 | Fair 2.5.0 新版本特性
- Sword finger offer 15 Number of 1 in binary
- Logseq 评测:优点、缺点、评价、学习教程
- elk笔记24--用gohangout替代logstash消费日志
- The R language GT package and gtextras package gracefully and beautifully display tabular data: nflreadr package and gt of gtextras package_ plt_ The winloss function visualizes the win / loss values
- JSP and filter
- Introduction to the implementation principle of rxjs observable filter operator
- Smbms project
- 研发团队资源成本优化实践
猜你喜欢

Brief analysis of tensorboard visual processing cases

Kivy教程之 盒子布局 BoxLayout将子项排列在垂直或水平框中(教程含源码)

Can newly graduated European college students get an offer from a major Internet company in the United States?

AI scores 81 in high scores. Netizens: AI model can't avoid "internal examination"!

物联网毕设 --(STM32f407连接云平台检测数据)

Flink SQL knows why (16): dlink, a powerful tool for developing enterprises with Flink SQL

The difference between stratifiedkfold (classification) and kfold (regression)
![[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [sqlserver2012 comprehensive exercise]](/img/47/78d9dd098dcb894ba1f459873d5f52.png)
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [sqlserver2012 comprehensive exercise]

My creation anniversary: the fifth anniversary

已解决(机器学习中查看数据信息报错)AttributeError: target_names
随机推荐
Sword finger offer 14- ii Cut rope II
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [sqlserver2012 comprehensive exercise]
Sword finger offer 15 Number of 1 in binary
刚毕业的欧洲大学生,就能拿到美国互联网大厂 Offer?
Flink SQL knows why (19): the transformation between table and datastream (with source code)
DQL basic query
Some thoughts on business
Servlet
Flink SQL knows why (XIV): the way to optimize the performance of dimension table join (Part 1) with source code
Fabric.js 更换图片的3种方法(包括更换分组内的图片,以及存在缓存的情况)
[today in history] July 3: ergonomic standards act; The birth of pioneers in the field of consumer electronics; Ubisoft releases uplay
My creation anniversary: the fifth anniversary
已解决TypeError: Argument ‘parser‘ has incorrect type (expected lxml.etree._BaseParser, got type)
Flink SQL knows why (16): dlink, a powerful tool for developing enterprises with Flink SQL
CVPR 2022 image restoration paper
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter IV exercises]
Tencent cloud tdsql database delivery and operation and maintenance Junior Engineer - some questions of Tencent cloud cloudlite certification (TCA) examination
File uploading and email sending
Father and basketball
[Database Principle and Application Tutorial (4th Edition | wechat Edition) Chen Zhibo] [Chapter V exercises]