zoukankan      html  css  js  c++  java
  • 顺序表 增删改操作

    1.从键盘依次输入10个整数(彼此以若干空格隔开),在内存中建立一个顺序表。然后完成以下操作:
    ① 查找:输入一个欲查找的整数,找到则显示第一个相匹配的整数在顺序表中所处的位置,若不存在,则显示"Not Found"。
    ② 删除:输入一个表示欲删除整数的位置的整数i(注意i的合法性),在顺序表中删除该数,并保证删除后依然是顺序表。
    ③ 插入:输入一个欲插入位置i和欲插入元素e,将e插入到第i个整数之前(注意i的合法性)。

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 #define  MAXSIZE  30
      4 typedef int DataType;
      5 
      6 typedef  struct  node 
      7 {   
      8     DataType  data[MAXSIZE];
      9     int  length;
     10 } SeqList,* PSeqList;
     11 //typedef SeqList* PSeqList;
     12 
     13 
     14 PSeqList  Init_SeqList( );
     15 PSeqList  Create_SeqList(PSeqList PL);
     16 int Location_SeqList (PSeqList PL, DataType  x);
     17 int Delete_SeqList(PSeqList PL,int i );
     18 int  Insert_SeqList(PSeqList PL,int i,DataType  x);
     19 Print_SeqList(PSeqList PL);
     20 
     21 main()
     22 {
     23    int t=1;
     24    int op;
     25    DataType x;
     26    int flag;
     27    int l;
     28    PSeqList PL;
     29    
     30          
     31          while(t)
     32        {
     33             printf("
    
    
    
    ");
     34             printf("			---顺序表---
    ");
     35             printf("
    			*******************************************");
     36             printf("
    			*          1---初始化及创建                  *");
     37             printf("
    			*          2---查找                  *");
     38             printf("
    			*          3---删除                  *");
     39             printf("
    			*          4---插入                 *");
     40             printf("
    			*          0---退     出                  *");
     41             printf("
    			*******************************************");
     42             printf("			请选择菜单号(0--4):");
     43             scanf("%d",&op);
     44             switch(op)
     45             {
     46    
     47     case 1:
     48         PL=Init_SeqList();//初始化顺序表
     49         PL=Create_SeqList(PL);
     50         printf("新创建的顺序表为:");
     51         Print_SeqList(PL);
     52         break;
     53         
     54     case 2:
     55         printf("查找
    ");
     56         printf("请输入待查找元素x
    ");
     57         scanf("%d",&x);//输入待查找数值
     58         Print_SeqList(PL);
     59         flag=Location_SeqList (PL,x);//调用查找函数
     60         if(!flag)
     61               printf("Not Found
    ");
     62         else
     63               printf("待查找的x在顺序表中的位置为%d
    ",flag);
     64         break;
     65 
     66     case 3:
     67         printf("删除
    ");
     68         printf("请输入待删除元素的位置l:
    ");
     69         scanf("%d",&l);
     70         Delete_SeqList(PL,l);//调用删除函数
     71         Print_SeqList(PL);
     72         break;
     73 
     74     case 4:
     75         printf("插入
    ");
     76         printf("请输入待插入元素的位置l:");
     77         scanf("%d",&l);
     78         printf("请输入待插入的元素x:");
     79         scanf("%d",&x);
     80         Insert_SeqList(PL,l,x);
     81         Print_SeqList(PL);
     82         break;
     83     case 0:
     84           t=0;
     85           printf("
    			程序结束!
    ");
     86           break;
     87           
     88     default: 
     89         printf("
    				输入错误!请重新输入!
    ");
     90         break;
     91 
     92    }
     93        
     94        }
     95 
     96 
     97 }
     98 
     99 
    100 
    101 PSeqList  Init_SeqList(void)
    102 {  /*创建一顺序表,入口参数无,返回一个指向顺序表的指针,指针值为零表示分配空间失败*/
    103    PSeqList  PL;
    104    PL=( PSeqList )malloc(sizeof(SeqList)); 
    105    if (PL)       /*若PL=0表示分配失败*/
    106         PL->length=0;     
    107    return (PL);
    108 } 
    109 
    110 PSeqList  Create_SeqList(PSeqList PL)
    111 {
    112        int i,n;
    113        printf("请输入需初始化的元素个数
    ");
    114        scanf("%d",&n);
    115        printf("请输入%d个整数,中间用空格隔开:
    ",n);
    116        for(i=0;i<n;i++)//输入10个整数
    117        { 
    118            scanf("%d",&PL->data[i]);
    119            PL->length++; 
    120        }
    121        return (PL);
    122 
    123 
    124 }
    125 
    126 int Location_SeqList (PSeqList PL,DataType  x)
    127 {  /*顺序表检索,入口参数:为顺序表指针,检索元素,返回元素位置,-1表示表不存在,0表示查找失败*/
    128     int i;
    129     if (! PL) 
    130     {  
    131        printf("表不存在"); 
    132        return(-1); /*表不存在,不能检索*/
    133      } 
    134    i=0;
    135    while (i<PL-> length && PL->data[i]!= x)
    136              i++;
    137    if (i>=PL-> length)             
    138        return 0;
    139    else              
    140        return (i+1);  
    141 
    142 }
    143 
    144 int Delete_SeqList(PSeqList PL,int i)
    145 {  /*顺序表删除,入口参数:顺序表指针,删除元素位置,返回标志1表示成功,0表示删除位置不合法,-1表示表不存在*/
    146     int  j;
    147     if (! PL)
    148     { 
    149        printf("表不存在"); 
    150        return(-1);    /*表不存在,不能删除元素*/
    151     }
    152     if(i<1 || i> PL -> length)  /*检查删除位置的合法性*/
    153     {  
    154         printf ("删除位置不合法"); 
    155         return(0);
    156     } 
    157     //*x= PL ->data[i-1];
    158     for(j=i;j< PL -> length; j++)
    159          PL ->data[j-1]=PL ->data[j];    //向上移动
    160     PL-> length --;    
    161     return (1);        /*删除成功*/
    162 } 
    163 
    164 int  Insert_SeqList(PSeqList PL,int i,DataType  x)
    165 {   /*顺序表插入,入口参数:顺序表指针,插入位置,插入元素,返回标志,1表示成功,0表示插入位置不合法,-1表示溢出,-2表示表不存在*/
    166      int j;
    167      if (!PL)
    168      {
    169            printf("表不存在");
    170            return(-2);      /*表不存在,不能插入*/
    171       }  
    172      if (PL-> length >= MAXSIZE)
    173      { 
    174           printf("表溢出"); 
    175           return (-1);       /*表空间已满,不能插入*/
    176      } 
    177 
    178      if(i<1||i>PL->length+1)
    179      {
    180       printf("插入位置不合法"); 
    181       return(0); 
    182      } 
    183 
    184      for(j= PL->length-1;j>=i-1;j--) 
    185           PL->data[j+1]= PL ->data[j];   //移动元素
    186      PL->data[i-1]=x;//PL->data[i-1]=x;  
    187      PL->length++;
    188      return (1);
    189 } 
    190 
    191 Print_SeqList(PSeqList PL)
    192 {
    193     int i;
    194     if(!PL)
    195     {
    196         printf("无此顺序表");
    197         return -1;
    198     }
    199     if(PL->length==0)
    200     {
    201         printf("空表");
    202         return 0;
    203     }
    204 
    205     printf("顺序表的长度为%d",PL->length);
    206     printf("顺序表的各元素值为:");
    207     for(i=0;i<=PL->length-1;i++)
    208         printf("%4d",PL->data[i]);
    209     return 1;
    210 
    211 }
  • 相关阅读:
    Redux API之applyMiddleware
    Redux API之combineReducers
    Redux API之creatStore
    Redux API之Store
    React-Redux之API
    ES6之6种遍历对象属性的方法
    React库protypes属性
    js立即执行函数
    Collection与Map总结
    02-再探MySQL数据库
  • 原文地址:https://www.cnblogs.com/panxinqi/p/6586686.html
Copyright © 2011-2022 走看看