静态顺序表

//顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。
//线性表采用顺序存储的方式存储就称之为顺序表。
//顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。



#include "stdio.h"
#include "stdlib.h"
// ElemTYpe类型指定 方法一 
#define   ElemType int
// ElemTYpe类型指定 方法二 
typedef int ElemTYpe;  //元素类型 
#define listsize 20

typedef struct{
    ElemType data[listsize];   //静态分配内存空间 
    int length;
}Sqlist;

//函数声明
    void createlist(Sqlist *l,int n);
    void printlist(Sqlist *l); 
    void locateElem(Sqlist *l);
    void listinsert(Sqlist *l);  //插入元素 
    void listdelete(Sqlist *l); //删除元素 


   int main()
   { 
    int n;
    int i=0;

     Sqlist l;
     l.length=0;

     printf("请输入顺序线性表的长度:\n");
     scanf("%d",&n);

     //函数调用 
     createlist(&l,n);
     printlist(&l);
     locateElem(&l);
     listinsert(&l) ;
     listdelete(&l);

     return 0;
}

   //新建顺序表 
    void createlist(Sqlist *l,int n)
    {
         printf("请输入顺序表元素:\n");
        for(int i=0;i<n;i++)
       {
        scanf("%d",&l->data[i]);
        l->length=n;
       }
    }
  //打印顺序表 
  void printlist(Sqlist *l)
  {
     printf("打印顺序表如下:\n");
     for(int i=0;i<l->length;i++)
       {
       //  printf("%d  ",&l->data[i]);  //这句输出的是地址 
          printf("%d  ",l->data[i]); 
       }
  } 

    //查找顺序表 
       void locateElem(Sqlist *l)
       {
        int n;
        printf("请输入你要查找的元素:\n");
        scanf("%d",&n);

         for(int i=0;i<l->length+2;i++)
       {
          if(l->data[i]==n)
          {
                printf("你要查找的元素的位置为:%d\n",i);
                break;
          }
          if (i==l->length)
          {
            printf("没有你要查找的元素!\n");
        }
       }
       }

       //插入元素 
        void listinsert(Sqlist *l) 
        {
            int n,i,m;
        printf("请输入你要插入的元素:\n");
        scanf("%d",&n);
        printf("请输入你要插入的位置:\n");
        scanf("%d",&i);

       //插入新的元素后数组从数组尾部往前向后移一位 
        for(int j=l->length;j>=i;j--)
        {
            l->data[j+1] =l->data[j];
        }
           l->data[i]= n;
           l->length++;
          printf("打印新顺序表:\n");
          printlist(l);     
        } 


     //删除元素 
void listdelete(Sqlist *l)
{
    int i; 
    printf("请输入你要删除元素的位置:\n");
        scanf("%d",&i);

         //删除一个元素后数组从后往前向后移一位 
            for(int j=i;j<=l->length-1;j++)
        {
            l->data[j] =l->data[j+1];
        } 
          l->length--;
          printf("打印新顺序表:\n");
          printlist(l); 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值