实验一 顺序表的实现

简介: 实验一 顺序表的实现

一、实验目的
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;
}
相关文章
|
算法 C语言
实现顺序表的各种基本算法
C语言顺序表实现
125 0
|
4月前
|
存储 算法
顺序表经典算法
顺序表经典算法
|
5月前
|
存储 算法
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
数据结构和算法学习记录——线性表之单链表(上)-初始单链表及其尾插函数(顺序表缺陷、单链表优点、链表打印)
39 0
|
5月前
|
存储 算法
数据结构和算法学习记录——线性表之顺序表(顺序表概念、结构、顺序表接口函数-头插头删、尾插尾删)
数据结构和算法学习记录——线性表之顺序表(顺序表概念、结构、顺序表接口函数-头插头删、尾插尾删)
27 0
|
6月前
|
存储 算法 程序员
顺序表的模拟
顺序表的模拟
|
6月前
|
存储 测试技术
单链表的模拟实现
单链表的模拟实现
49 0
|
11月前
|
存储
模拟实现顺序表
模拟实现顺序表
41 0
|
存储
05 顺序表的结构与实现
05 顺序表的结构与实现
37 0
|
机器学习/深度学习 存储 人工智能
顺序表算法练习
顺序表算法练习
219 0