实验一 顺序表的实现

一、实验目的
1.熟悉和掌握Dev-C++环境下的编译、调试和执行的方法及步骤。
2.熟悉线性表顺序存储的实现方式。
二、实验内容
实现顺序表的插入、删除、查看等操作。
操作菜单要求:
①插入:输入插入的位置和数据,输出插入后的数据;
②删除:输入要删除的位置,输出删除后的数据;
③查看:查看当前顺序表的数据;
④退出。
(该实验内容以“int”作为顺序表数据元素的数据类型即可。)

SqLish.h

#include <malloc.h>
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct 
{
    
    	
	ElemType data[MaxSize];
   	int length;
}SqList;    //顺序表类型
void CreateList(SqList * &L,ElemType a[],int n)  
{
    
      int i=0,k=0;
   L=(SqList *)malloc(sizeof(SqList));
   while (i<n)		//i扫描a中元素
   {
    
      L->data[k]=a[i];
      k++; i++;	//k记录插入到L中的元素个数
   }
   L->length=k;
 }

void InitList(SqList *&L)  //引用型指针
{
    
    
    L=(SqList *)malloc(sizeof(SqList));
    L->length=0;
} 
void DestroyList(SqList *&L)//销毁顺序表 
{
    
    
	free(L);
}
bool ListEmpty(SqList *L)//判断顺序表是否为空 
{
    
    
	return(L->length==0);
}
int ListLength(SqList *L) //求顺序表长度 
{
    
    
	return(L->length);
}
void DispList(SqList *L)//显示顺序表
{
    
    
	for(int i=0;i<L->length;i++)
	printf("%4d",L->data[i]);
	printf("\n");
}
bool GetElem(SqList *L,int i,ElemType &e)//获取顺序表L第i位置,用e返回 
{
    
    
	if(i<1 || i>L->length)
	 return false;
	 e=L->data[i-1];
	 return true;
}
bool ListInsert(SqList *L,int i,ElemType &e)// 在顺序表L第i位置,插入数据元素e 
{
    
    
	int j;
	if(i<1 || i>L->length)
	return false;
	i--;
	for(j=L->length;j>i;j--)
	L->data[j]=L->data[j-1];
	L->data[i]=e;
	L->length++;
	return true;
}
bool ListDelete(SqList *L,int i,ElemType &e)//删除 顺序表L第i位置,用e返回 
{
    
    
	int j;
	if(i<1 || i>L->length)
	return false;
	i--;
	e=L->data[i];
	for(j=i;j<L->length-1;j++)
	L->data[j]=L->data[j+1];
	L->length--;
}

main.h

#include <iostream>
#include <stdio.h>
#include "SqList.h" 

int main(int argc, char** argv) {
    
    
	SqList *L;
	//*int类型
	int a[10]={
    
    1,2,2,4,5,6,7,8,9,10};
	CreateList(L,a,10);//创建顺序表
	printf("=====当前线性表为:\n");
	DispList(L);//显示顺序表 
    printf("\n");
	int n;
	while(1)
	{
    
    
		printf("==============\n");
		printf("1.插入数据\n");
		printf("2.删除数据\n");
		printf("3.查看数据\n");
		printf("4.退出\n");
		printf("==============请选择:");
		scanf("%d",&n);
		printf("\n\n\n");
		switch (n)
		{
    
    
		case 1: 
		   	int i,j;
			printf("=====请输入要插入的位置:");
			scanf("%d",&i);
			printf("=====请输入要插入的数据元素:");
			scanf("%d",&j);
			ListInsert(L,i,j);	
			printf("插入后的数据是:");
			DispList(L);
			printf("\n\n\n");		    	
			break;
		case 2: 
			int a,b;
			printf("=====请输入要删除的位置:");
			scanf("%d",&a);
			printf("=====删除的数据元素是:");
			ListDelete(L,a,b);
			printf("%d\n",b);
			printf("删除后的数据是:");
			DispList(L);
			printf("\n\n\n");	
			break;
		case 3: 
			printf("=====当前线性表为:\n");
			DispList(L);
			printf("\n\n\n");			
			break;
		case 4: 
			return 0;						
		default:
		printf("请输入正确的操作");
		}
		
	}
	
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_52521533/article/details/123408706