栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言实现顺序表的基本操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言实现顺序表的基本操作

数据结构顺序表操作

复制代码 代码如下:
#include
#include
#include
#define LIST_INIT_SIZE 100
#define LISINCREMENT 10
#define ElemType int
#define Status int
typedef struct Sq{
 ElemType *elem;
 int length;
 int listsize;
}SqList;
Status InitList(SqList *L)
{
 L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));
 if(!L->elem)
  return 0;
 L->length=0;
 L->listsize=LIST_INIT_SIZE;
 return 1;
}
Status ListInsert(SqList *L,int i,ElemType e)
{
 int *q,*p;
 if(i<1||i>L->length)
  return 0;
 if(L->length>L->listsize)
 {
        ElemType *newbase=(ElemType*)realloc(L->elem,(LIST_INIT_SIZE+LISINCREMENT)*sizeof(ElemType));
     if(!newbase)
      return 0;
     L->elem=newbase;
     L->listsize+=(LISINCREMENT);
 }

 q=&(L->elem[i-1]);
 for(p=&(L->elem[L->length-1]);p>=q;--p)
  *(p+1)=*p;
    *q=e;
 ++L->length;
 return 1;
}
Status ListDelete(SqList *L,int i,ElemType e)
{
 int *p,*q;
 if(i<1||i>L->length)
        return 0;
    p=&(L->elem[i-1]);
 e=*p;
 q=L->elem+L->length-1;
 for(++p;p<=q;++p)
  *(p-1)=*p;
 --L->length;
 return 1;
}
int main(void)
{
 int i,j,e,lo,temp;
 SqList *L=(SqList*)malloc(sizeof(SqList));
    InitList(L);
 printf("请输顺序表的长度:n");
    scanf("%d",&L->length);
 printf("请输入顺序表的各个元素:n");
 for(i=0;ilength;++i)
  scanf("%d",&L->elem[i]);
 printf("输入的顺序表是:n");
    for (i=0;ilength;++i)
    {
  printf("%d ",L->elem[i]);
 }
 printf("n");
    printf("请输入插入的位置以及节点:n");
    scanf("%d%d",&j,&e);
 ListInsert(L,j,e); 
 printf("插入后的顺序表为:n");
 for (i=0;ilength;++i)
    {
  printf("%d ",L->elem[i]);
 }
 printf("n");
 printf("请输入要删除的位置:");
 scanf("%d",&lo);
 ListDelete(L,lo,temp);
 for (i=0;ilength;++i)
    {
  printf("%d ",L->elem[i]);
 }
 printf("n");
 free(L);
 return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/65795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号