yuns1993 2013-06-12 10:25 采纳率: 0%
浏览 1881

关于数据结构顺序表的应用

设计一个通讯录,用顺序存储结构进行存储,设计出生成线性表,在第I个结点位置插入结点,删除第I个结点,打印表中结点的算法

  • 写回答

1条回答 默认 最新

  • 饭小粒 2017-07-30 02:53
    关注

    #include
    typedef char datatype ;
    #define maxsize 1000

    typedef struct
    { datatype data[maxsize] ; /*定义线性表为一个向量*/
    int last;
    } sequenlist ;
    /* 插入函数*/
    int insert(sequenlist L,char x,int i) /将新结点X插入到表L的第I个位置*/
    /*L为指向线性表sequenlist类型的指针变量*/
    { int j ;
    if ((*L).last= = maxsize-1)
    { printf(“overflow\n”) ;
    return 0;
    }
    else
    if ((i(*L).last+1))
    { printf(“error\n”) ; /* 非法位置*/
    return 0 ;
    }
    else
    { for (j=(*L).last ; j>=i-1 ; j- -)
    (*L).data[j+1]= (*L).data[j] ;
    (*L).data[i-1]= x ;
    (*L).last = (*L).last +1 ;
    }
    return (1) }

    /* 删除函数*/ /*从表中删除第I个结点*/
    int delete (sequenlist L, int i)
    {
    int j ;
    if ((i(*L).last+1) /
    非法位置*/
    { printf(“error\n”) ;
    return 0 ;
    }
    else
    { for ( j=i ; j<= (*L).last ; j++)
    (*L).data[j-1]= (*L).data[j] ;
    (*L).last = (*L).last -1 ;
    }
    return (1) }

    /* 生成线性表*/
    void creatlist (sequenlist L )
    { int i ,j,n ;
    printf (“ input data\n” ) /
    输入N个数据*/
    scanf(“%d”,&n) ;
    for ( i=0 ;L=data;i<n ; L++,i++)
    { printf (“ data[%d]=”, i )

    scanf(“%c”,(*L).data[i]) ;
    }
    (*L).last=n-1 ;
    printf (“\n”);
    }

    /* 输出线性表*/

    printout (sequenlist *L)
    { int i;
    for ( i=0 ; i< (*L).last ; i++)
    { printf (“ data[%d]=”, i )
    printf (“ %c ”, *L.data[i] ) ;
    }
    }
    main ()
    { sequenlist *L;
    char cmd ,x;
    int i , s;
    L= sequenlist;
    creatlist ( L ) ;
    clrscr();
    printf(“ i , I -----------插入\n”) ;
    printf(“ d , D -----------删除\n”) ;
    printf(“ q , Q -----------退出\n”) ;
    do
    { do
    { cmd=getchar() ;
    }
    while (( cmd!=’d’ )&& (cmd!=’D’ )&& (cmd!=’I’ )&& (cmd!=’i’ )&&(cmd!=’q’) &&(cmd!=’Q’)) ;
    switch (cmd)
    { case ‘i’ :
    case ’I’ : {
    scanf(“%c”,&x) ;
    scanf(“%d”,&i) ;
    insert(L,x,i);
    printout (L) ;
    break ;
    }
    case ‘d’ :
    case ’D’ : {
    scanf(“%d”,&i) ;
    delete(L , i);
    printout (L) ;
    break ;
    }
    }
    } while ( (cmd!=’q’) || (cmd!=’Q’))
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题