数据结构(C语言版)实验1
数据结构(C语言版)实验1
制作26个小写字母的顺序表
要求:通过顺序表实现26个字母的存储以及相关顺序表功能
代码实现:
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<ctype.h>
#define maxsize 26
#define stepsize 10
#define ok 1
#define Error -1
#define overflow 0
typedef int Elemtype;
typedef struct{
Elemtype *elem;
int length;
}Sqlist;
void InitList(Sqlist &L);
void listshow(Sqlist *L);
void main()
{
Sqlist L;
InitList(L);
for(int i=0;i<26;i++)
{
L.elem[i]=i+97;
printf("%c\t",L.elem[i]);
if(i%5==0&&i!=0) printf("\n");
}
system("pause");
}
//1.顺序表初始化
void InitList( Sqlist &L ){
L.elem=(Elemtype*)malloc(sizeof(Elemtype)*maxsize);
if(!L.elem) {
printf("顺序表初始化失败");
exit(overflow);
}
else
printf("顺序表初始化成功\n");
L.length=0;
}
//2.销毁顺序表
void destorylist(Sqlist *L)
{
if(!L->elem)
printf("顺序表不存在!无法执行操作");
else
{
free(L->elem);
printf("顺序表已经销毁");
}
}
//3.清空顺序表
void clearlist(Sqlist *L){
if(!L->elem)
printf("顺序表不存在!无法执行操作");
else
{
L->length=0;
printf("顺序表已经清空");
}
}
//4.返回顺序表长度
int listlength(Sqlist *L){
if(!L->elem)
{printf("顺序表不存在!无法执行操作");
return Error;}
else{
printf("顺序表已经清空");
return L->length;
}
}
//5.在第i个位置插入数据
int listinsert(Sqlist *L,int i, Elemtype e){
int j;
if(!L->elem){
printf("顺序表不存在!无法执行操作");
return Error;}
else
{
if(L->length>=maxsize){
L->elem=(Elemtype*)realloc(L->elem,sizeof(Elemtype)*stepsize);
}
if(i>0&&i<=L->length+1){
for(j=L->length;j>=i;j--)
L->elem[j]=L->elem[j-1];
L->elem[i-1]=e;
L->length++;
}
}
}
//6.删除第i个元素
int listdelete(Sqlist *L,int i,Elemtype &e){
int j;
if(!L->elem){
printf("顺序表不存在!无法执行操作");
return Error;}
else
{
if(i>0&&i<=listlength(L)){
e=L->elem[i-1];
for(j=i;j<=listlength(L);j++)
L->elem[j-1]=L->elem[j];
L->length--;
printf("删除成功");
}
}
}
//7.显示顺序表
void listshow(Sqlist *L){
int i;
printf("打印长度为%d的顺序表",L->length);
for(i=0;i<L->length;i++)
printf("%c",L->elem[i]);
}
结构化程序模块展示
- 主函数
- 顺序表初始化
- 销毁顺序表
- 清空顺序表
- 返回顺序表长度
- 在第i个位置插入数据
- 删除第i个元素
- 显示顺序表
模块图解
遇到的问题:
&符号在C语言中的仅为取地址,而不能进行引用,但是在c++中即可引用,故在研究本人的代码时请创建文件为c++文件