实验一 顺序表的实现

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

一、实验目的
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;
}
相关文章
实验二 栈和队列的应用
实验二 栈和队列的应用
142 0
|
存储 C语言 C++
实验一 线性表的基本操作
实验一 线性表的基本操作
315 0
|
存储 算法 C语言
数据结构与算法-实验2 树的二叉链表表示及其遍历
基本任务:用二叉链表存储结构表示下图所示二叉树, 并用递归方法输出三种遍历结果。 修改数节点值的数据类型及visit函数后,可以正常输出 进阶任务: 1,计算输出所建树的高度 2,用非递归算法实现中序遍历 3,实现层次遍历,提示见后面。 4,用顺序存储表示,并进行层次遍历、先序、中序和后续遍历 5,用非递归算法实现先序遍历、后续遍历
476 0
数据结构与算法-实验2 树的二叉链表表示及其遍历
|
存储 算法 C语言
数据结构实验课:实验一、顺序表的实现及应用
数据结构实验课:实验一、顺序表的实现及应用
446 0
实验3二叉树的应用完整代码
实验3二叉树的应用完整代码
118 0
数据结构上机实验之二分查找
数据结构上机实验之二分查找
|
存储 算法 API
算法——顺序表(1)
算法——顺序表(1)
95 0
算法——顺序表(1)

热门文章

最新文章