数据结构-实验1 顺序表

本文档描述了一个数据结构实验,旨在设计一个顺序表操作演示程序。程序应具备初始化、输入建立、输出、插入、删除等基本功能,涵盖在指定位置插入、删除元素等多种操作。
摘要由CSDN通过智能技术生成

【问题描述】
设计一个顺序表操作演示程序。
【基本要求】
顺序表操作演示程序提供一个用户界面,可演示的基本功能包括:
(1)初始化顺序表;
(2)输入并建立顺序表;
(3)输出顺序表中的元素;
(4)在顺序表指定位置插入元素;
(5)在顺序表指定元素之前插入元素;
(6)删除顺序表指定位置的元素;
(7)删除顺序表指定元素之前的元素;
(8)删除顺序表所有指定值的元素。
代码实现:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>

#define OK 1
#define FALSE 0
#define TRUE 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2 

#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

typedef int Status;
typedef int ElemType;

typedef struct
{
   
 ElemType *elem;
 int size;
 int length;
}SqList;

Status Init(SqList &L)//初始化顺序表
{
   
 L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));//分配空间 
 if(!L.elem)
 {
   
  printf("Init false!\n");//分配失败 
  return ERROR;
 }
 L.length=0;
 L.size=LIST_INIT_SIZE;
 printf("Init successful!\n");//分配成功 
 return OK;
}

Status Insert(SqList &L,int i,ElemType e)//在i位置插入数据 
{
   
 if(i<1||i>L.length+1)//位置不合理 
 {
   
  printf("The location you wanna insert is wrong!\n");
  return ERROR;
 }
 ElemType *newbase;
 if(L.length>=L.size)//顺序表长度不够 
 {
   
  newbase=(ElemType *)realloc(L.elem,(L.size+LISTINCREMENT)*sizeof(ElemType));//重新申请 
  if(!newbase)//重新申请失败 
  {
   
   printf("ERROR!\n");
   return ERROR;
  }
  L.elem=newbase;
  L.size+=LISTINCREMENT;
 }
 ElemType *p,*q;
 q=&(L.elem[i-1]);
 for(p=&(L.elem[L.length-1]);p>=q;--p)//数据的移动便于在给定位置的插入 
 {
   
  *(p+1)=*p;
 }
 *q=e;//在给定位置放入数据 
 L.length++;//表的长度加1 
 return OK;
}

Status TInsert(SqList &L,ElemType x,ElemType e,int flag)//在某元素前后插入数据 
{
   
 ElemType *newbase;
 if(L.length>=L.size)//顺序表长度不够 
 {
   
  newbase=(ElemType *)realloc(L.elem,(L.size+LISTINCREMENT)*sizeof(ElemType))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值