1. 首页>动态要闻 > 信息

数据结构顺序表

作者:张龙
2019-10-10
信息

不知道这个程序能不能满足你的要求,该程序用顺序表方式,能实现删除线性表的元素,之后还可以往线性表中插入元素,后附有运行情况图:

程序如下

#include<iostream>

using namespace std;

#include<malloc.h>

#define LIST_INIT_SIZE  100

#define LISTINCREMENT   10

#define OVERFLOW        -1

#define OK               1

#define ERROR            0

typedef int Status;

typedef int ElemType;

typedef int KeyType;

typedef  struct{

 ElemType *elem;

 KeyType *key;

 int  length;

 int  listsize;

}SqList;

typedef struct{

 KeyType key;

}SElemType;

Status InitList (SqList &L){   

 int length1;

 printf("请确定顺序表的长度:");

 scanf("%d",&length1);

    L.listsize=length1;

    L.elem=(ElemType*)malloc(length1*sizeof(ElemType));

 if(!L.elem){

  printf("out of space");

        exit(OVERFLOW);

    }

    L.length=0;

    return OK;

}

   

Status Listinsert (SqList &L,int i, ElemType e){ 

 ElemType  *p,*q,*newbase;

        if(i<1||i>L.length+1){

   return ERROR;

  }

  if(L.length>L.listsize)

  {

   newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

   if (newbase==NULL){

    printf("out of space");

    return (OVERFLOW);

   }

   L.listsize+=LISTINCREMENT;

  }

  p=&( L.elem[i-1]);

  for (q=&(L.elem[L.length-1]) ;q>=p;q--){

   *(q+1)=*q;

  }

  L.elem[i-1]=e;

  L.length++;

                        

  return OK;

}

Status DeleteList (SqList &L,int i){

 ElemType   *q ,*p;

 if(i<1||i>L.length){

  return ERROR;

 }

 q = &(L.elem[i-1]);

 p = L.elem+L.length-1;

 for (q++; q <= p; q++){

  *(q-1) = *q;

 }

 L.length--;

 return OK;

}

int main(){

 SqList L;

 int i,e;

 InitList (L);

 printf("请向表中置入元素:n");

 for(i=0;i<L.listsize;i++){ 

    scanf("%d",&(L.elem[i]));

    L.length++; 

 }

 printf("所创建的线性表为:n");

 for(i=0;i<L.listsize;i++){

  printf("%4d",L.elem[i]);

 }

 printf("n");

 printf("n");

 printf("请输入要删除的元素的位置:") ;

    scanf("%d",&i);

    DeleteList(L, i ) ;

 printf("删除后的线性表为:n");

    for(i=0;i<L.length;i++){

  printf("%4d",L.elem[i]);

 }

 printf("n");

 printf("n");

  printf("请输入要插入的位置和元素:") ;

    scanf("%d%d",&i,&e);

    Listinsert (L,i,e);

 printf("插入后的线性表为:n");

    for(i=0;i<L.length;i++){

  printf("%4d",L.elem[i]);

 }

 printf("n");

 printf("n");

 return OK;

}

推荐阅读
  • 日照好玩的地方和吃海鲜应该去哪听说日

    日照好玩的地方:万平口:"旅游来日照,必到万平口",已成为各地游客的共识。刘家湾赶海园:以赶海系列活动为主,集旅游、休闲、度假、民俗、健身于一体的综合旅游园。竹洞天:位于山东省日照市城区西端的将帅沟毛竹…

    信息 2024-11-15
  • 什么是铸造

    铸造是指将室温中为液态,但不久后将要固态化的物质倒入特定形状的铸模待其凝固成形的加工方式。 被铸物质多半原为固态但加热至液态的金属(例:铜、铁、铝、锡、铅等),而铸模的材料可以是沙、金属甚至陶瓷。 因应…

    信息 2024-11-15
  • 变形金刚中博派和狂派各有哪些人物

    博派:擎天柱,铁皮,大黄蜂,爵士,棘齿。狂派:威震天,红蜘蛛,眩晕,吵闹,萨克,碎骨魔,路障,迷乱。…

    信息 2024-11-15
  • 一平方毫米的铜线能过多少安的电流

    1平方毫米的铜线在不同电流下通过的安培数不同。最大是18A:(1)60A以下,选1平方毫米的铜线安全载流量是6A;(2)60~100A,选1平方毫米的铜线,安全载流量是5A;(3)100A以上,选1平方毫米的铜线,安全载流量是2.5A 。…

    信息 2024-11-15
  • 中华人民共和国城乡规划法第四十条有规

    自2008年1月1日起施行的《中华人民共和国城乡规划法》第四十条:在城市、镇规划区内进行建筑物、构筑物、道路、管线和其他工程建设的,建设单位或者个人应当向城市、县人民政府城乡规划主管部门或者省、自治区、直辖…

    信息 2024-11-15