#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 ;
}

最新文章

  1. 如何配置Linux系统的网络IP地址
  2. Android(Linux)实时监控串口数据
  3. winXP下安装opensshd服务
  4. Domain many-to-many
  5. HDU 5828 Rikka with Sequence (线段树)
  6. MyBatis(3.2.3) - Cache
  7. ASP.NET关于Login控件使用,LoginView&#160;控件,CreateUserWizard&#160;控件
  8. 使用JAVA进行MD5加密后所遇到的一些问题
  9. Docker aufs存储驱动layer、diff、mnt目录的区别
  10. 网页中使用CSS和JS阻止用户选择内容
  11. openssh/openssl升级到7.4和1.0.2j 源码方式
  12. 【Android】webview javascript 注入方法
  13. ajax设置默认值ajaxSetup()方法
  14. 线程、进程、协程 异步io
  15. python包中__init__.py的作用
  16. day21 re模块
  17. kafka+zookeeper环境配置(linux环境单机版)
  18. CentOS7.5搭建Solr7.4.0集群服务
  19. 教你玩转产品管理系统iClap(基础功能篇)
  20. 使用NodeJS将文件或图像上传到服务器

热门文章

  1. NFV技术中遇到的新名词
  2. js中val()和value的区别
  3. C#错误之 System.Threading.ThreadAbortException:正在中止线程
  4. SQL Server 中几种常见的约束关系
  5. python之errno
  6. 解读Unity中的CG编写Shader系列四(unity中的圆角矩形shader)
  7. How to call getClass() from a static method in Java?
  8. Visual Studio 2013 (vs2013)中“向前定位”,“向后定位”按钮
  9. springMVC中ajax的使用
  10. win7 ubuntu10.04双系统,重装win7后,修复双启动项