静态顺序表的各种操作

//
//  main.c
//  test1
//
//  Created by chen on 14-3-10.
//  Copyright (c) 2014年 chen. All rights reserved.
//

#include "stdio.h"
#include<stdlib.h>
#define MaxSize 10      //静态表的最大值为10
/*静态顺序表的各种操作*/

/**   向顺序表中插入元素    */
/**   参数Sqlist:表首地址    */
/**   参数*len: 表的长度     */
/**   参数i: 插入元素的位置 */
/**   参数x:待插入的元素值  */
void insertElem(int Sqlist[],int *len,int i,int x)//此处使用*len的作用就是使这个函数可以改变它的值。即:传入了地址!
{
    int t;
    if(*len==MaxSize || i<1 || i>*len+1)
    {
        printf("This insert is illegal\n");
        return;
    }                                      /*非法插入*/
    for(t=*len-1;t>=i-1;t--)
        Sqlist[t+1]=Sqlist[t];
    Sqlist[i-1]=x;                           /*插入元素*/
    *len=*len+1;                          /*表长加1*/
}

/**   向顺序表中删除元素    */
/**   参数Sqlist:表首地址    */
/**   参数*len: 表的长度     */
/**   参数i: 删除元素的位置 */
void DelElem(int Sqlist[],int *len,int i)
{
    int j;
    if(i<1 || i>*len)
    {
        printf("This insert is illegal");
        return;
    }                                    /*非法插入*/
    for(j=i;j<=*len-1;j++)
        Sqlist[j-1]=Sqlist[j];               /*将第i个元素之后的元素前移*/
    *len=*len-1;                          /*表长减1*/
}

/**测试函数*/
int main()
{
    /*按照题目要求进行测试*/
    int Sqlist[MaxSize];                   /*定义一个静态顺序表*/
    int len;
    int i;
    printf("please input 6 numbers:\n");
    for(i=0;i<6;i++)
        scanf("%d",Sqlist+i);               //此句和下一句的功能一样,注意区分
        //scanf("%d",&Sqlist[i]);            /*从键盘输入6个整数*/
                                            //c中,输入的分割是回车或者空格,数量不限制
    len=6;
    for(i=0;i<len;i++)
        printf("%d ",Sqlist[i]);            /*输出顺序表中的6个整数*/
    printf("\nThe spare length is %d\n",MaxSize - len);    /*显示表中的剩余空间*/
    insertElem(Sqlist,&len,3,0);          /*在表中第3位置插入整数0*/
    for(i=0;i<len;i++)
        printf("%d ",Sqlist[i]);            /*输出顺序表中的所有元素*/
    printf("\nThe spare length is %d\n",MaxSize - len);   /*显示表中的剩余空间*/
    insertElem(Sqlist,&len,11,0);            /*在表中第11位置插入整数0*/
    DelElem(Sqlist,&len,6);              /*删除顺序表中的第6个元素*/
    for(i=0;i<len;i++)
        printf("%d ",Sqlist[i]);            /*输出顺序表中的所有元素*/
    printf("\nThe spare length is %d\n",MaxSize - len);     /*显示表中的剩余空间*/
    //getche();
    return 0;
}

 

posted @ 2014-03-10 16:35  little white  阅读(509)  评论(0编辑  收藏  举报