数据结构(C语言版)实验1

大学数据结构实验 专栏收录该内容
3 篇文章 0 订阅

数据结构(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++文件

  • 2
    点赞
  • 3
    评论
  • 19
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 3 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:创作都市 设计师:CSDN官方博客 返回首页

打赏作者

kylinmin

江湖纷争,刀光剑影,求点过路费

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值