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

 更新时间:2014年03月30日 09:07:17   作者:  
这篇文章主要介绍了c语言实现顺序表的基本操作,需要的朋友可以参考下

数据结构顺序表操作

复制代码 代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#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;i<L->length;++i)
  scanf("%d",&L->elem[i]);
 printf("输入的顺序表是:\n");
    for (i=0;i<L->length;++i)
    {
  printf("%d ",L->elem[i]);
 }
 printf("\n");
    printf("请输入插入的位置以及节点:\n");
    scanf("%d%d",&j,&e);
 ListInsert(L,j,e); 
 printf("插入后的顺序表为:\n");
 for (i=0;i<L->length;++i)
    {
  printf("%d ",L->elem[i]);
 }
 printf("\n");
 printf("请输入要删除的位置:");
 scanf("%d",&lo);
 ListDelete(L,lo,temp);
 for (i=0;i<L->length;++i)
    {
  printf("%d ",L->elem[i]);
 }
 printf("\n");
 free(L);
 return 0;
}

相关文章

  • 快速模式匹配算法(KMP)的深入理解

    快速模式匹配算法(KMP)的深入理解

    本篇文章是对快速模式匹配算法(KMP)进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • opencv3/C++ 实现SURF特征检测

    opencv3/C++ 实现SURF特征检测

    今天小编就为大家分享一篇opencv3/C++ 实现SURF特征检测,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • C语言实现扫雷游戏详解

    C语言实现扫雷游戏详解

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 你真的理解C语言qsort函数吗 带你深度剖析qsort函数

    你真的理解C语言qsort函数吗 带你深度剖析qsort函数

    这篇文章主要介绍了你真的理解C语言qsort函数吗?带你深度剖析qsort函数,本篇将引入一个库函数来实现我们希望的顺序,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • C/C++ 数组和指针及引用的区别

    C/C++ 数组和指针及引用的区别

    这篇文章主要介绍了C/C++ 数组和指针及引用的区别的相关资料,这里从汇编的角度来分析他们之间的区别,需要的朋友可以参考下
    2017-07-07
  • VsCode配置C++/Cmake的步骤详解

    VsCode配置C++/Cmake的步骤详解

    本文分步骤给大家介绍VsCode配置C++/Cmake的方法,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧
    2021-07-07
  • 关于Qt C++中connect的几种写法代码示例

    关于Qt C++中connect的几种写法代码示例

    这篇文章介绍了Qt中connect函数的不同编写方式,包括传统的槽函数写法、使用函数指针的写法、Lambda表达式以及使用QOverload选择重载信号的写法,每种写法都有其特点和适用场景,程序员应根据具体需求选择最合适的方式,需要的朋友可以参考下
    2024-11-11
  • C/C++ Qt 基本文件读写的基本使用(2种实现)

    C/C++ Qt 基本文件读写的基本使用(2种实现)

    文件的读写是很多应用程序具有的功能,本文主要介绍了两种实现方法,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写
    2021-11-11
  • 利用C语言将点分十进制的IP字符串转成4个整数

    利用C语言将点分十进制的IP字符串转成4个整数

    这篇文章主要为大家详细介绍了如何利用C语言实现将点分十进制的IP字符串转成4个整数,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-01-01
  • C++11 nullptr实现初始化空指针

    C++11 nullptr实现初始化空指针

    避免产生“野指针”最有效的方法,就是在定义指针的同时完成初始化操作,本文主要介绍了C++11 nullptr初始化空指针,感兴趣的可以了解一下
    2022-01-01

最新评论