顺序表1.2
来源:互联网 发布:特价乐购 淘宝u站 编辑:程序博客网 时间:2024/06/05 00:13
编写一个程序,动态地创建一个顺序表。要求:顺序表初始长度为10,向顺序表中输入15个整数,并打印出来;再删除顺序表中的第5个元素,打印出删除后的结果。
注意:
realloc的用法:动态内存调整
指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。
头文件:#include <stdlib.h> 有些编译器需要#include <malloc.h>,在TC2.0中可以使用alloc.h头文件
#include"stdio.h"
//#include"conio.h"#include<malloc.h>
#define maxsize 10
typedef int elemtype;
typedef struct {
elemtype *elem;
int length;
int listsize;
}sqlist;
void initsqlist(sqlist *L)
{
L->elem = (int *)malloc(maxsize*sizeof(elemtype));
if (!L->elem)
{
printf("initsqlist failed\n");
return ;
}
L->length = 0;
L->listsize = maxsize;
}
void Insertelem(sqlist *L, int i, elemtype item)
{
elemtype *base, *insertPtr, *p;
if (i<1 || i>L->length + 1) //因为这是插入,所以i可以等于L->length,就是插到了最后一个的后面,但是删除 的时候i不可以等于L->length;
{printf("insertelem failed\n");
return ;
}
if (L->length >= L->listsize)
{
base = (elemtype*)realloc(L->elem, (L->listsize + 10)*sizeof(elemtype));
L->elem = base;
L->listsize = L->listsize + 10;
}
insertPtr = &(L->elem[i - 1]);
for (p = &(L->elem[L->length - 1]); p >= insertPtr; p--)
*(p + 1) = *p;
*insertPtr = item;
L->length++;
}
void DelElem(sqlist *L, int i)
{
elemtype *delitem, *q;
if (i<1 || i>L->length)
{
printf("delelem failed\n");
return;
}
delitem = &(L->elem[i-1]);
q = &(L->elem[L->length - 1]);
for (delitem; delitem <= q; delitem++)
*(delitem) = *(delitem+1);
L->length--;
}
int main()
{
sqlist l;
int i;
initsqlist(&l);
for (i = 0; i < 15; i++)
Insertelem(&l, i + 1, i + 1);
printf("\nthe const of the list is\n");
for (i = 0; i < l.length; i++)
printf("%d ", l.elem[i]);
DelElem(&l, 5);
printf("\ndelete the fifth element\n");
for (i = 0; i < l.length; i++)
printf("%d ", l.elem[i]);
}
0 0
- 顺序表1.2
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 顺序表
- 用Mathematica生成一系列具有类似分形特征的曲线
- android启动--深入理解zygote
- sip协议
- 补码
- android启动--深入理解zygote (II)
- 顺序表1.2
- 第三章:Shiro的配置
- LeetCode 260. Single Number III
- linux下 vi 命令
- LOAD BALANCING, AFFINITY, PERSISTENCE, STICKY SESSIONS: WHAT YOU NEED TO KNOW
- 欧拉回路,欧拉路
- 极限安全新闻播报(04.09)
- android启动--深入理解init进程
- BottomSheetBehavior底部弹出窗口的用法