//头文件
#ifndef _SEQULIST_H_
#define _SEQULIST_H_
#define MAXSIZE 100
typedef int datatype;
typedef struct {
datatype a[MAXSIZE];
int size;
}
sequence_list;
#endif
/*该代码定义了一个结构体 sequence_list,其中包含一个数组 a 和一个整型变量 size,表示该顺序表的大小。然后使用了预编译指令 #define 定义了常量 MAXSIZE,表示数组 a 的最大长度为 100。
然而,在 #define 宏定义时,应该去掉等号,即应该写成:
#define MAXSIZE 100
因此,该代码会报错。*/
//函数体
#include<stdio.h>
#include<stdlib.h>
#include"sequlist.h"
//顺序表的初始化--置空表
void init(sequence_list *slt)
{
slt->size=0;
}
void append(sequence_list *slt,datatype x)
{
if(slt->size==MAXSIZE)
{printf("顺序表是满的");exit(1);}
slt->a[slt->size]=x;
slt->size=slt->size+1;
}
void display(sequence_list slt)
{
int i;
if(!slt.size) printf("\n顺序表是空的!");
else
for(i=0;i<slt.size;i++)
{
printf("%5d",slt.a[i]);
}
}
int empty(sequence_list slt)
{
return (slt.size==0 ? 1:0);
}
int find(sequence_list slt ,datatype x)
{
int i=0;
while(i<slt.size&&slt.a[i]!=x) i++;{
return i<slt.size? 1:0;
}
}
datatype get(sequence_list slt,int i)
{
if(i<0 || i>=slt.size)
{printf("\n指定位置不存在");exit(1);}
else
return slt.a[i];
}
void insert(sequence_list *slt,datatype x,int position)
{
int i;
if(slt->size==MAXSIZE)
{printf("\n顺序表是满的,无法插入");exit(1);}
if(position<0||position>slt->size)
{printf("\n指定 插入不存在");exit(1);}
for(i=slt->size;i>position;i--) slt->a[i] = slt->a[i-1];
slt->a[position]=x;
slt->size++;
}
void dele(sequence_list *slt,int position)
{
int i;
if(slt->size==0)
{printf("\n顺序表是空的");exit(1);}
if(position<0||position>=slt->size)
{printf("\n指定的位置不存在");exit(1);}
for(i=position;i<slt->size-1;i++) slt->a[i]= slt->a[i+1];
slt->size--;
}
//主函数
#include <stdio.h>
#include <stdlib.h>
#include "sequlist.h"
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
{
sequence_list slt;
init(&slt); // 初始化顺序表
append(&slt, 1);
append(&slt, 2);
append(&slt, 3);
printf("顺序表中的元素为:");
display(slt); // 显示顺序表中的元素
printf("\n");
printf("顺序表是否为空:%d\n", empty(slt)); // 判断顺序表是否为空
printf("元素2是否在顺序表中:%d\n", find(slt, 2)); // 判断元素2是否在顺序表中
printf("第2个元素为:%d\n", get(slt, 1)); // 获取第2个元素
insert(&slt, 10, 1); // 在第2个位置插入元素10
printf("插入元素10后,顺序表中的元素为:");
display(slt);
printf("\n");
dele(&slt, 2); // 删除第3个元素
printf("删除第3个元素后,顺序表中的元素为:");
display(slt);
printf("\n");
}
return 0;
}
网友评论