静态顺序表

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



#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); 
} 

你可能感兴趣的:(内存,计算机,线性表,结构)