线性表的顺序列表的定义、初始化等操作
2016-09-06 17:29
507 查看
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERR 0
#define MAXSIZE 100
//定义顺序存储结构
typedef struct list{
int elem[MAXSIZE];
int last;
}SeqList;
//初始化线性表
SeqList *InitList()
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
L->last = 0;
return L;
}
//查找操作,按内容查找
int Locate(SeqList *L,int e)
{
int i=0;
for (i;i<L->last-1;i++)
{
if (L->elem[i]==e)
{
return i+1;
}
}
return -1;
}
//插入操作.在表的第i个位置前插入一个新元素
int InsList(SeqList *L,int i,int e)
{
int k;
if (i<1||i>L->last+1)
{
printf("插入位置不合法!");
return ERR;
}
if (L->last>=MAXSIZE)
{
printf("表已满,无法插入!");
return ERR;
}
for (k=L->last-1;k>=i;k--)
{
L->elem[k+1]=L->elem[k];
}
L->elem[i-1]=e;
L->last++;
return OK;
}
//删除表的第i个元素,并且用指针e返回其值
int DelList(SeqList *L,int i,int *e)
{
int k;
if (i<1||i>L->last)
{
printf("删除位置不合法!");
return ERR;
}
*e=L->elem[i-1];
for (k=i-1;k<L->last;k++)
{
L->elem[k]=L->elem[k+1];
}
L->last--;
return OK;
}
//线性表的输出
void print_seqList(SeqList *L)
{
int j;
for (j=1;j<=L->last;j++)
{
printf("%d\t",L->elem[j-1]);
if (j%5==0)
{
printf("\n");
}
}
}
int main()
{
SeqList *L;
L=InitList();
int a,j,locate,e;
for (j=1;j<10;j++)
{
printf("请输入要插入的数字:\n");
scanf("%d",&a);
InsList(L,a,j);
}
printf("\n");
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("插入后的列表为:\n");
print_seqList(L);
printf("\n");
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("查找元素5是否存在,显示下标:\n");
locate = Locate(L,5);
printf("%d\n",locate);
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("删除第7个元素,返回被删除的元素:\n");
DelList(L,7,&e);
printf("被删除的元素是:%d\n",e);
return 0;
}
#include <stdlib.h>
#define OK 1
#define ERR 0
#define MAXSIZE 100
//定义顺序存储结构
typedef struct list{
int elem[MAXSIZE];
int last;
}SeqList;
//初始化线性表
SeqList *InitList()
{
SeqList *L;
L = (SeqList *)malloc(sizeof(SeqList));
L->last = 0;
return L;
}
//查找操作,按内容查找
int Locate(SeqList *L,int e)
{
int i=0;
for (i;i<L->last-1;i++)
{
if (L->elem[i]==e)
{
return i+1;
}
}
return -1;
}
//插入操作.在表的第i个位置前插入一个新元素
int InsList(SeqList *L,int i,int e)
{
int k;
if (i<1||i>L->last+1)
{
printf("插入位置不合法!");
return ERR;
}
if (L->last>=MAXSIZE)
{
printf("表已满,无法插入!");
return ERR;
}
for (k=L->last-1;k>=i;k--)
{
L->elem[k+1]=L->elem[k];
}
L->elem[i-1]=e;
L->last++;
return OK;
}
//删除表的第i个元素,并且用指针e返回其值
int DelList(SeqList *L,int i,int *e)
{
int k;
if (i<1||i>L->last)
{
printf("删除位置不合法!");
return ERR;
}
*e=L->elem[i-1];
for (k=i-1;k<L->last;k++)
{
L->elem[k]=L->elem[k+1];
}
L->last--;
return OK;
}
//线性表的输出
void print_seqList(SeqList *L)
{
int j;
for (j=1;j<=L->last;j++)
{
printf("%d\t",L->elem[j-1]);
if (j%5==0)
{
printf("\n");
}
}
}
int main()
{
SeqList *L;
L=InitList();
int a,j,locate,e;
for (j=1;j<10;j++)
{
printf("请输入要插入的数字:\n");
scanf("%d",&a);
InsList(L,a,j);
}
printf("\n");
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("插入后的列表为:\n");
print_seqList(L);
printf("\n");
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("查找元素5是否存在,显示下标:\n");
locate = Locate(L,5);
printf("%d\n",locate);
printf("————————————————————:\n");
printf("————————————————————:\n");
printf("删除第7个元素,返回被删除的元素:\n");
DelList(L,7,&e);
printf("被删除的元素是:%d\n",e);
return 0;
}
相关文章推荐
- 线性表的顺序列表的定义、初始化等操作
- 数据结构C语言实现线性表(顺序实现)的初始化与基本操作
- 线性表的顺序存储格式基本操作:初始化、插入、删除、查找、打印
- 【数据结构之旅】顺序栈的定义、初始化、空栈判断、入栈、出栈操作
- 线性表的单链表的定义、初始化等操作
- 顺序表的定义、初始化、及插入、删除、查询操作,将算法转化成具体的代码
- C语言版数据结构中顺序表的基本操作定义和初始化
- 线性表的单链表的定义、初始化等操作
- 顺序栈的定义、初始化、出栈、入栈等操作 C++代码实现
- 线性表的定义与操作顺序表,链式表(C语言)
- 顺序线性表的定义与基本操作
- 顺序栈的定义、初始化、出栈、入栈等操作 C++代码实现 ——感想
- 不同编译单元内定义的non-local static 对象的初始化顺序
- asp.net 页面从初始化到卸载事件顺序(及对页面控件调用)完整列表【转】
- 链栈的定义、初始化、出栈、入栈等操作
- 初始化列表中初始化顺序和它们在类中声明的顺序保持一致---读书笔记
- 复习一:顺序线性表的操作.
- asp.net 页面从初始化到卸载事件顺序(及对页面控件调用)完整列表【转】
- 顺序列表的操作
- 线性顺序表的基本操作