循序表操作样例
来源:互联网 发布:淘宝客pid 编辑:程序博客网 时间:2024/04/30 14:11
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define LISTINCREASMENT 100 /*每次分配元素的个数*/
#define LISTSIZE 10 /*顺序存储的最大个数*/
#define OVERFLOW -1
#define OK 1
typedef int ElemType;
typedef struct /*顺序表元素的的定义*/
{
ElemType * elem;
int length;
int listsize;
} Sqlist;
int SqInitial(Sqlist &L) /*初始化线性表*/
{
L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));
if (! L.elem) exit(OVERFLOW); //存储分配失败
L.length=0;
L.listsize=LISTSIZE;
return OK;
}
int ListInsert(Sqlist &L,int i,ElemType e) /*插入元素*/
{
if(i<1|| i > L.length+1) printf("ERROR!");
if(L.length>=L.listsize)
{
ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)
*sizeof(ElemType));
if(!newbase) return OVERFLOW;// 当前存储空间已满
L.elem=newbase;
L.listsize+=LISTINCREASMENT; /*表的容量不足分配内存*/
}
ElemType * q=&(L.elem[i-1]);
ElemType * p;
for(p=&(L.elem[L.length-1]); p>=q; --p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
void ListDelete(Sqlist &L,int i,ElemType &e) //删除线性表中第i个位置上的元素
{
if(i<1||i>L.length) printf("ERROR!");
else
{
e=L.elem[i-1];
for(;i<L.length;i++)
{
L.elem[i-1]=L.elem[i];
}
L.length--;
}
}
ElemType GetElem(Sqlist &L,int i)
{
if(i<1||i>L.length) printf("ERROR!");
else
{
return L.elem[i-1];
}
}
int main()
{
Sqlist L;
int t =1 ,d;
SqInitial(L);
printf("构建长度为7的顺序表。\n");
for(t=1; t<=7; t++) /*构建长度为7的顺序表*/
{
printf("Please input the %dth list elem:",t);
scanf("%d",&d);
ListInsert(L,t,d);
}
printf("表长: %d\n",L.length); /*输出表长*/
for(t=1; t<=L.length; t++)
printf("%d ",L.elem[t-1]);/*读表*/
printf("\n删除的位置:"); //删除元素
scanf("%d",&t);
ListDelete(L,t,d);
printf( "删除元素的值:%d\n",d);
printf( "删除后的表:");
for(t=1; t<=L.length; t++)
printf("%d ",L.elem[t-1]); //删除后的表
printf("\n要插入的位置"); //插入元素
scanf("%d",&t);
printf("要插入的值");
scanf("%d",&d);
ListInsert(L,t,d);
printf( "插入以后的表:");
for(t=1; t<=L.length; t++) //插入以后的表
printf("%d ",L.elem[t-1]);
printf("\n要检索的元素的位置:"); //检索元素
scanf("%d",&t);
d=GetElem(L,t);
printf( "该元素的值为:%d\n",d);
return 0;
}
#include <stdlib.h>
#include <malloc.h>
#define LISTINCREASMENT 100 /*每次分配元素的个数*/
#define LISTSIZE 10 /*顺序存储的最大个数*/
#define OVERFLOW -1
#define OK 1
typedef int ElemType;
typedef struct /*顺序表元素的的定义*/
{
ElemType * elem;
int length;
int listsize;
} Sqlist;
int SqInitial(Sqlist &L) /*初始化线性表*/
{
L.elem=(ElemType *) malloc (LISTSIZE*sizeof(ElemType));
if (! L.elem) exit(OVERFLOW); //存储分配失败
L.length=0;
L.listsize=LISTSIZE;
return OK;
}
int ListInsert(Sqlist &L,int i,ElemType e) /*插入元素*/
{
if(i<1|| i > L.length+1) printf("ERROR!");
if(L.length>=L.listsize)
{
ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREASMENT)
*sizeof(ElemType));
if(!newbase) return OVERFLOW;// 当前存储空间已满
L.elem=newbase;
L.listsize+=LISTINCREASMENT; /*表的容量不足分配内存*/
}
ElemType * q=&(L.elem[i-1]);
ElemType * p;
for(p=&(L.elem[L.length-1]); p>=q; --p)
*(p+1)=*p;
*q=e;
++L.length;
return OK;
}
void ListDelete(Sqlist &L,int i,ElemType &e) //删除线性表中第i个位置上的元素
{
if(i<1||i>L.length) printf("ERROR!");
else
{
e=L.elem[i-1];
for(;i<L.length;i++)
{
L.elem[i-1]=L.elem[i];
}
L.length--;
}
}
ElemType GetElem(Sqlist &L,int i)
{
if(i<1||i>L.length) printf("ERROR!");
else
{
return L.elem[i-1];
}
}
int main()
{
Sqlist L;
int t =1 ,d;
SqInitial(L);
printf("构建长度为7的顺序表。\n");
for(t=1; t<=7; t++) /*构建长度为7的顺序表*/
{
printf("Please input the %dth list elem:",t);
scanf("%d",&d);
ListInsert(L,t,d);
}
printf("表长: %d\n",L.length); /*输出表长*/
for(t=1; t<=L.length; t++)
printf("%d ",L.elem[t-1]);/*读表*/
printf("\n删除的位置:"); //删除元素
scanf("%d",&t);
ListDelete(L,t,d);
printf( "删除元素的值:%d\n",d);
printf( "删除后的表:");
for(t=1; t<=L.length; t++)
printf("%d ",L.elem[t-1]); //删除后的表
printf("\n要插入的位置"); //插入元素
scanf("%d",&t);
printf("要插入的值");
scanf("%d",&d);
ListInsert(L,t,d);
printf( "插入以后的表:");
for(t=1; t<=L.length; t++) //插入以后的表
printf("%d ",L.elem[t-1]);
printf("\n要检索的元素的位置:"); //检索元素
scanf("%d",&t);
d=GetElem(L,t);
printf( "该元素的值为:%d\n",d);
return 0;
}
0 0
- 循序表操作样例
- 头插法和尾插法创建链式循序表 遍历、插入、删除、查找元素等操作
- 循序表的(SeqList.h)
- 循序表的(main.c)
- 簡單的struts實例循序漸進
- java数据结构 一(线性表循序储存结构)
- 循序表的(SeqList.c)(函数实现)
- 各种数据结构的完整实现之 静态数组实现循序表
- 各种数据结构的完整实现之 动态数组实现循序表
- CPP文件循序
- Filter的执行循序
- 循序加解密
- Set和存储循序
- 闭包--循序学习
- DNS名称解析搜索循序
- java继承中的初始化循序
- Windows 用户帐户控制循序
- 菜单功能,实现循序队列
- swith & if 应用场景 及区别
- 隐藏,覆盖,重载的区别
- Andrew Ng -machine learning 课堂笔记(一)第六周
- Android 设计模式 之 单例模式
- PC硬件与系统维护--第一版
- 循序表操作样例
- C++main函数的参数
- kindeditor的N多Bug问题
- HDU 4200 Bad Wiring(高斯消元)
- Java第三章习题3-7(1到n的阶乘和<=9999)
- Linux常用命令
- Cocos2D -- 添加点击侦听listener(基本格式、判断点击区域、拖拽跟随移动)
- List、Set和Map
- 页面静态化