4.8日学习打卡

今天写了顺序表的一些操作:

1.求顺序表的长度。

2.输出顺序表的元素。

3.顺序表的插入。

4.顺序表的删除。

5.顺序表的查找。

6.顺序表的排序。

在写的过程中遇到了些许困难,好多都是细节错误,if后面写了分号,导致后面的语句没有按规则执行,输入少了地址符等等。

以下是我写的代码:

  1 #include"stdio.h"
  2 #define Maxsize 30
  3 typedef struct
  4 {
  5     int data[Maxsize];
  6     int n;
  7 }Sqlist;
  8  int Length(Sqlist *L)  /*求顺序表的长度函数*/ 
  9  {
 10      int i;
 11      printf("请输入长度:");
 12      scanf("%d",&L->n);
 13      putchar(32);
 14      for(i=0;i<L->n;i++)
 15        {
 16            printf("请输入第%d个元素:",i+1);
 17            scanf("%d",&L->data[i]);
 18            putchar(32); 
 19       }
 20        return L->n;
 21  }
 22    void print(Sqlist *L)/*输出顺序表的元素*/ 
 23    {
 24           int i;
 25           for(i=0;i<L->n;i++)
 26           printf("%-2d",L->data[i]);
 27    }
 28    int insert(Sqlist *L,int x,int i)/*在顺序表中插入一个元素*/ 
 29    {      int j;
 30       if(i<0||i>L->n+1) return 0;
 31           for(j=L->n;j>=i;j--)
 32              L->data[j]=L->data[j-1];
 33              L->data[i-1]=x; 
 34                    L->n++;  
 35             return L->n; 
 36    }
 37    int del(Sqlist *L,int x)/*在顺序表中删除一个元素*/ 
 38    {
 39          int i;
 40          for(i=0;i<L->n;i++)
 41          {    
 42               if(L->data[i]==x)
 43                  {   
 44                       for(;i<L->n-1;i++)
 45                      L->data[i]=L->data[i+1];
 46                       L->n--;
 47                      return L->n;
 48             } 
 49       }
 50        if(i>=L->n) return 0;   
 51    }
 52    void found(Sqlist *L,int x)/*顺序表的查找*/ 
 53    {
 54           int i;
 55          for(i=0;i<L->n;i++)
 56          {    
 57               if(L->data[i]==x)
 58                  {   
 59                     printf("%d的逻辑位置是第:%d个\n",x,i+1);
 60                     break;
 61             } 
 62       }
 63       if(i>=L->n)
 64       printf("Not found\n");
 65    }
 66    void Sort(Sqlist *L)/*顺序表的排序*/ 
 67    {
 68           int i,j,t;
 69           for(i=0;i<L->n-1;i++)
 70           for(j=0;j<L->n-1-i;j++)
 71            if(L->data[j]<L->data[j+1])
 72               {
 73                    t=L->data[j];
 74                    L->data[j]=L->data[j+1];
 75                    L->data[j+1]=t; 
 76            }
 77            for(i=0;i<L->n;i++)
 78            printf("%-2d",L->data[i]);
 79    }
 80 main()
 81 {
 82     Sqlist L;
 83     int length,x,i,t;
 84     length=Length(&L);
 85     printf("顺序表的长度是:%d",length);
 86     printf("\n");
 87     printf("输出顺序表的元素:");
 88     print(&L);
 89     printf("\n");
 90     printf("请输入要插入的数,和逻辑位置:");
 91     scanf("%d%d",&x,&i);
 92     t=insert(&L,x,i);
 93     if(t) 
 94     {
 95         printf("插入成功\n");
 96         printf("输出插入之后的元素:");
 97            print(&L);
 98            printf("\n");
 99            printf("顺序表的长度为:%d\n",t); 
100     }
101     else printf("插入失败\n");
102     printf("请输入要删除的数:"); 
103     scanf("%d",&x);
104     t=del(&L,x);
105         if(t) 
106     {
107         printf("删除成功\n");
108         printf("输出删除之后的元素:");
109            print(&L);
110            printf("\n");
111            printf("顺序表的长度为:%d\n",t); 
112     }
113     else printf("删除失败\n");
114     printf("请输入要查找的数:");
115     scanf("%d",&x);
116     found(&L,x);
117     printf("将顺序表的元素从大到小排序:");
118     Sort(&L);
119      
120 }

posted @ 2019-04-08 20:59  sky灬刘海波  阅读(162)  评论(1编辑  收藏  举报