顺序表C语言版
2024-10-01 20:25:51
#include <stdio.h>
/*
* 顺序表最多输入N个数
*/
#define N 10
#define OK 1
#define ERROR -1 struct sequeuelist {
int *elem;
int length;
int listsize;
};
/*
* 因为l是指针,所以请注意->的使用,而不是L.
*/
int sequeuelist_init(struct sequeuelist *l) {
l->elem = (int *)malloc(N * sizeof(int));
if (!l->elem) {
return ERROR;
}
l->length = ;/* 空表长度为0 */
l->listsize = N;/* 初始存储容量 */
return OK;
}
/*
* 插入函数,在实验时,可暂不考虑空间不足的情况
*/
int sequeuelist_insert(struct sequeuelist *l, int i, int e) {
int *q = NULL;
int *p = NULL;
q = &(l->elem[i-]);
for (p = &(l->elem[l->length]); p > q; --p) {
*(p+) = *p;
}
*q = e;
l->length++;
return OK;
}
/*
* 输出顺序表所有结点的值
*/
int sequeuelist_print(struct sequeuelist *l) { int *start = NULL;
int *stop = NULL; stop = &(l->elem[l->length]);
for (start = &(l->elem[]); start< stop; start++) {
printf("%d\t", *start);
}
printf("\n");
} /*
* 顺序表l,从第i各元素起,连续删除k个元素。
*/
int sequeuelist_delete_ith_to_kth(struct sequeuelist *l, int i, int k)
{
int *p = NULL;/*如果p为指向struct squeue的指针类型,则p++后,p增加的是struct squeue类型成员的长度*/
int *q = NULL;
int *r = NULL;
int length_temp = l->length-;
p = &(l->elem[i-]);
r = &(l->elem[length_temp]);
for (q = &(l->elem[i+k-]); q <= &(l->elem[length_temp]); /*q++*/) {
*(p++) = *q;
q++;
l->length--;
} return OK;
}
/*
*
*/
int main(void) {
int i;
int e;
int n = ;
struct sequeuelist *l = NULL;
struct sequeuelist M;
l = &M; sequeuelist_init(l);
printf("Please input n numbers:\n");
/*
* 由于线性表的下标是从0开始的
*/
for (i = ; i <= n; i++) {/* 创建初始的顺序表,包含n个数 */
scanf("%d", &e);
sequeuelist_insert(l, i, e);
}
sequeuelist_print(l);/*输出各结点的值*/
///*
//sequeuelist_insert(l, 3, 999);/*在第三个元素前插入999*/
//printf("After insert:\n");
//*/
//sequeuelist_print(M);/*输出插入后各结点的值*/
sequeuelist_delete_ith_to_kth(l, , );
sequeuelist_print(l);
return ;
}
最新文章
- 如何配置Linux系统的网络IP地址
- Android(Linux)实时监控串口数据
- winXP下安装opensshd服务
- Domain many-to-many
- HDU 5828 Rikka with Sequence (线段树)
- MyBatis(3.2.3) - Cache
- ASP.NET关于Login控件使用,LoginView&#160;控件,CreateUserWizard&#160;控件
- 使用JAVA进行MD5加密后所遇到的一些问题
- Docker aufs存储驱动layer、diff、mnt目录的区别
- 网页中使用CSS和JS阻止用户选择内容
- openssh/openssl升级到7.4和1.0.2j 源码方式
- 【Android】webview javascript 注入方法
- ajax设置默认值ajaxSetup()方法
- 线程、进程、协程 异步io
- python包中__init__.py的作用
- day21 re模块
- kafka+zookeeper环境配置(linux环境单机版)
- CentOS7.5搭建Solr7.4.0集群服务
- 教你玩转产品管理系统iClap(基础功能篇)
- 使用NodeJS将文件或图像上传到服务器
热门文章
- NFV技术中遇到的新名词
- js中val()和value的区别
- C#错误之 System.Threading.ThreadAbortException:正在中止线程
- SQL Server 中几种常见的约束关系
- python之errno
- 解读Unity中的CG编写Shader系列四(unity中的圆角矩形shader)
- How to call getClass() from a static method in Java?
- Visual Studio 2013 (vs2013)中“向前定位”,“向后定位”按钮
- springMVC中ajax的使用
- win7 ubuntu10.04双系统,重装win7后,修复双启动项