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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题