数据结构第一天

  主体部分
     1 #include "03_head.h"
     2    int main(int argc, const char *argv[])
     3    {
     4        Seq *list = creat_data();
     5        int a = 0;
     6        int b = 0;
     7        int c = 0;
     8        int d = 0;
     9        int i=0;
    10        for(i=0;;i++)
    11        {
    12            printf("添加数据_1\n");
    13            printf("查询数据_2\n");
    14            printf("修改数据_3\n");
    15            printf("删除数据_4\n");
    16            printf("遍历数据_5\n");
                printf("输入数据查询下角标'6'\n");
    17            printf("退出_0\n");
    18            int select = 0;
    19            printf("请输入>>>>>");
    20            scanf("%d",&select);
    21            switch(select)
    22            {
    23            case 1:
    24                printf("请选择--1 数据or 2 下标---");
    25                scanf("%d",&a);
    26                switch(a)
    27                {
    28                case 1:
    29                    insert_data(list);
    30                    break;
    31                case 2:
    32                    subscript_insertion(list);
    33                    break;
    34                }
    35                break;
    36            case 2:
    37                printf("请选择--1 数据or 2 下标---");
    38                scanf("%d",&b);
    39                switch(b)
    40                {
    41                case 1:
    42                    looup(list);
    43                    break;
    44                case 2:
    45                    Loo_sub(list);
    46                    break;
    47                }
    48                break;
    49            case 3:
    50                printf("请选择--1 数据or 2 下标---");
    51                scanf("%d",&c);
    52                switch(c)
    53                {
    54                case 1:
    55                    modify_data(list);
    56                    break;
    57                case 2:
    58                    mod_sub(list);
    59                    break;
    60                }
    61                break;
    62            case 4:
    63                printf("请选择--1 数据or 2 下标---");
    64                scanf("%d",&d);
    65                switch(d)
    66                {
    67                case 1:
    68                    delete_data(list);
    69                    break;
    70                    case 2:
    71                    delect_sub(list);
    72                    break;
    73                }
    74                break;
    75            case 5:
    76                Traverse_data(list);
    77                break;
    78            case 0:
    79                goto Founce;
                 case 6:           
                     seek(list);   
                     break;        
    80            default:
    81                printf("<<<<<<输入错误>>>>>\n");
    82                break;
    83            }
    84        }
    85    Founce:
    86        return 0;
    87    }
   函数部分
    88    #include "03_head.h"
    89    Seq* creat_data()
    90    {
    91        Seq *list=(Seq*)malloc(sizeof(Seq));
    92        memset(list,0,sizeof(Seq));
    93        return list;
    94    }
    95    void insert_data(Seq *p)
    96    {
    97        if(p->index == N)
    98        {
    99            printf("--------顺序表已满--------\n");
   100            printf("<<<<<<请先删除不需要的数据在存储>>>>>>>>\n");
   101            return;
   102        }
   103    
   104        printf("<<<<<<<<<<<请输入>>>>>>>>>>>");
   105        int a;
   106        scanf("%d",&a);
   107        p->data[p->index] = a;
   108        p->index++;
   109        printf("<<<<<<<<输入成功>>>>>>>>>>>\n");
   110        for(int i=0;i<p->index;i++)
   111        {
   112            printf("%d ",p->data[i]);
   113        }
   114        putchar(10);
   115        
   116    }
   117    void looup(Seq *p)
   118    {
   119        if(0 == p->index)
   120        {
   121            printf("<<<<<还没有数据>>>>\n");
   122            return;
   123        }
   124        printf("<<<<<<<<<<请输入>>>>>>");
   125        int select;
   126        scanf("%d",&select);
   127        int i = 0;
   128        for(i=0;i<p->index;i++)
   129        {
   130            if(select == p->data[i])
   131            {
   132                printf("<<<<<<<<该数据为%d>>>>>>\n",p->data[i]);
   133                break;
   134            }
   135            if(i == p->index-1)
   136            {
   137                printf("<<<没有这个数据>>>\n");
   138            }
   139        }
   140    }
   141    void delete_data(Seq *p)
   142    {
   143        if(0 == p->index)
   144        {
   145            printf("<<<<<还没有数据>>>>\n");
   146            return;
   147        }
   148        printf("<<<<<<<<<请输入>>>>>");
   149        int select;
   150        scanf("%d",&select);
   151        int i = 0;
   152        for(i=0;i<p->index;i++)
   153        {
   154            if(select == p->data[i])
   155            {
   156                for(int j=i;j<N;j++)
   157                {
   158                    p->data[j]=p->data[j+1];
   159                    printf("<<<<<<<<<<<删除完成>>>>>>>>>>\n");
   160                }
   161            }
   162        }
   163        p->index--;
   164    
   165        for(int i=0;i<p->index;i++)
   166        {
   167            printf("%d ",p->data[i]);
   168        }
   169        putchar(10);
   170    }
   171    void modify_data(Seq *p)
   172    {
   173        if(0 == p->index)
   174        {
   175            printf("<<<<<还没有数据>>>>\n");
   176            return;
   177        }
   178        printf("<<<<请输入要修改哪一个数据>>");
   179        int select1;
   180        scanf("%d",&select1);
   181        printf("<<<<<请输入修改后的数据>>");
   182        int select2;
   183        scanf("%d",&select2);
   184        for(int i=0;i<p->index;i++)
   185        {
   186            if(select1 == p->data[i])
   187            {
   188                p->data[i] = select2;
   189                printf("<<<<<修改完成>>>>>\n");
   190            }
   191        }
   192        for(int i=0;i<p->index;i++)
   193        {
   194            printf("%d ",p->data[i]);
   195        }
   196        putchar(10);
   197    }
   198    //^^^^^^^^^^^^^^^按照数据修改文件^^^^^^^^^^^^^
   199    //---------------按照下标修改数据-------------
   200    void subscript_insertion(Seq *p)
   201    {
   202        printf("请输入需要插入的下标位置0---%d>>>>>>",p->index);
   203        int select1;
   204        scanf("%d",&select1);
   205        if(select1 < 0 || select1 > p->index)
   206        {
   207            printf("输入的下标不合法\n");
   208            return;
   209        }
   210        printf("请输入要添加的数据");
   211        int select2;
   212        scanf("%d",&select2);
   213        if(0 == p->index)
   214        {
   215            printf("<<<<<还没有数据>>>>\n");
   216            return;
   217        }
   218        p->index++;
   219        int c;
   220        for(int i=p->index;i>=select1;i--)
   221        {
   222            p->data[i]=p->data[i-1];
   223            c=i;
   224        }
   225        p->data[c]=select2;
   226        printf("插入成功\n");
   227        for(int i=0;i<p->index;i++)
   228        {
   229            printf("%d ",p->data[i]);
   230        }
   231        putchar(10);
   232    }
   233    void delect_sub(Seq *p)
   234    {
   235        if(0 == p->index)
   236        {
   237            printf("<<<<<还没有数据>>>>\n");
   238            return;
   239        }
   240        printf("请输入需要插入的下标位置0---%d>>>>>>",(p->index)-1);
   241        int select1;
   242        scanf("%d",&select1);
   243        if(select1 < 0 || select1 > p->index)
   244        {
   245            printf("输入的下标不合法\n");
   246            return;
   247        }
   248        for(int i=select1;i<p->index;i++)
   249        {
   250            p->data[i] = p->data[i+1];
   251            printf("删除成功\n");
   252        }
   253        p->index--;
   254        for(int i=0;i<p->index;i++)
   255        {
   256            printf("%d ",p->data[i]);
   257        }
   258        putchar(10);
   259    }
   260    void mod_sub(Seq *p)//修改
   261    {
   262        if(0 == p->index)
   263        {
   264            printf("<<<<<还没有数据>>>>\n");
   265            return;
   266        }
   267        printf("<<<<请输入下标位置>>>>\n");
   268        int select1;
   269        scanf("%d",&select1);
   270        printf("<<<<<请输入数据>>>>\n");
   271        int select2;
   272        scanf("%d",&select2);
   273        p->data[select1]=select2;
   274        for(int i=0;i<p->index;i++)
   275        {
   276            printf("%d ",p->data[i]);
   277        }
   278        putchar(10);
   279    
   280    }
   281    void Loo_sub(Seq *p)
   282    {
   283        printf("<<<<<请输入下标位置:0-----%d>>>>>",(p->index)-1);
   284        int select;
   285        scanf("%d",&select);
   286        if(select > p->index || 0 == index)
   287        {
   288            printf("数据不存在");
   289            return;
   290        }
   291        printf("该数据为%d\n",p->data[select]);
   292    }
   293    void Traverse_data(Seq *p)
   294    {
   295        if(0 == p->index)
   296        {
   297            printf("<<<<<还没有数据>>>>\n");
   298            return;
   299        }
   300        printf("%d",p->index);
   301        for(int j=0;j<p->index;j++)
   302        {
   303            for(int k=j+1;k<p->index;k++)
   304            {
   305                if(p->data[j] == p->data[k])
   306                {
   307                    for(int n=k;n<p->index-1;n++)
   308                    {
   309                        p->data[n] = p->data[n+1];
   310                    }
   311                    k--;
   312                    p->index--;
   313                }
   314            }
   315        }
   316        printf("%d\n",p->index);
   317        for(int i=0;i<p->index;i++)
   318        {
   319            printf("%d ",p->data[i]);
   320        }
   321        putchar(10);
   322    }
   333  void seek(Seq *p)                           
   334     {                                           
   335         printf("请输入数据\n");                 
   336         int select = 0;                         
   337         scanf("%d",&select);                    
   338         int i = 0;                              
   339         for(i=0;i<p->index;i++)                 
   340         {                                           
   341             if(p->data[i] == select)            
   342             {                                   
   343                 printf("%d\n",i);               
   344             }                                   
   345             if(i == p->index-1)                 
   346             {                                   
   347                 printf("<<<没有这个数据>>>\n"); 
   348             }                                   
   349         }                                       
   350                                         
   351     }                                           
 
   头文件部分
   323    #ifndef __FUN_H__
   324    #define __FUN_H__
   325    #include <stdio.h>
   326    #include <string.h>
   327    #include <stdlib.h>
   328    #define N 50
   329    typedef int dataType;
   330    typedef struct
   331    {
   332        dataType data[N];
   333        int index;
   334    }Seq;
   336    Seq* creat_data();
   338    void insert_data(Seq *p);
   340    void Traverse_data(Seq *p);
   341    void looup(Seq *p);
   342    void delete_data(Seq *p);
   343    void modify_data(Seq *p);
   344    void subscript_insertion(Seq *p);
   345    void delect_sub(Seq *p);
   346    void Loo_sub(Seq *p);
   347    void mod_sub(Seq *p);
   348    void seek(Seq *p) 
   349    #endif

————————————————
版权声明:本文为CSDN博主「hahhsssds」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hahhsssds/article/details/134741502

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值