数据结构c语言学习笔记

顺序表

创建一个静态的顺序表存放整数,大小为10
1.输入6个整数,打印出顺序表的内容,并且显示表中剩余的空间个数
2.在顺序表的第三个位置插入元素0,打印表内容,并且显示表中剩余的空间个数
3.在试图向表中的第十一个位置插入整数0,并且显示超出范围
4.删除表中的第六个元素,打印出顺序表中的内容,并且显示表中剩余的空间个数


/** 创建一个静态的顺序表存放整数,大小为10*/
    /**1.输入6个整数,打印出顺序表的内容,并且显示表中剩余的空间个数*/
   /** 2.在顺序表的第三个位置插入元素0,打印表内容,并且显示表中剩余的空间个数*/
    /**3.在试图向表中的第十一个位置插入整数0,并且显示超出范围*/
    /**4.删除表中的第六个元素,打印出顺序表中的内容,并且显示表中剩余的空间个数*/

    #include "stdio.h"
    #define MaxSize 10
    /** 向顺序表中插入元素 */

    /**参数Sqlist:表首地址   */

    /**参数*len:表的长度  */

    /**参数i:插入元素的位置*/

    /**参数x:待插入的元素值 */
    void insertElem(int Sqlist[],int *len ,int i,int x)
    {
       int t;
       if(*len==MaxSize||i<1||i>*len+1)
       {
           printf("这个插入的位置不合法\n");
         return;
       }
       for (t=*len-1;t>=i-1;t--)
        Sqlist[t+1]=Sqlist[t];       //将i之后的元素都向后移动一个位置

       Sqlist[i-1]=x;     //插入元素
      *len=*len+1; //表长加一
    }


    void DelElem(int Sqlist[],int *len,int i)
    {
        int j;
        if(i<1 || i>len)
        {
            printf("这个删除的位置不合法\n");
            return;
        }
        for (j=i;j<=*len-1;j++)
            Sqlist[j-1]=Sqlist[j];
        *len=*len-1;

    }


    /**测试函数*/
    int main(){
        int Sqlist[MaxSize];
        int len;
        int i;
        printf("请输入六个整数\n");
        for(i=0;i<6;i++){

        scanf("%d",&Sqlist[i]);       /*从键盘读入6整数*/
        len=6;}

        for(i=0;i<len;i++)
        {
            printf("%d\t",Sqlist[i]);
        }

        printf("\n 表中的剩余空间:%d然后在3的位置插入2\n",MaxSize-len);
        insertElem(Sqlist,&len,3,2);
        printf("------------------------------------------------\n");
        for(i=0;i<len;i++)
            printf("%d\t",Sqlist[i]);
        printf("表中的空间为%d然后在11的位置插入2\n",MaxSize-len);

        insertElem(Sqlist,&len,11,2);
        for(i=0;i<len;i++)
            printf("%d\t",Sqlist[i]);

        DelElem(Sqlist,&len,5);
        printf("删除后\n");
        for(i=0;i<len;i++)
            printf("%d\t",Sqlist[i]);
        printf("剩余的空间为:%d",MaxSize-len);

        }



**注意**:

 1.

*  是指针运算符,可以表示一个变量是指针类型;也可以表示一个指针变量的所指向的存储单元,可以获取某个地址存储的值。
& 是取地址符号,取得某一个变量的地址
-------------------------------滑稽的分割线------------------------
> (一)在定义时,* 是一个标识符,声明该变量是一个指针,比如说int *p; 那p就是一个指向int型的指针;
在调用时,
(1)*p是指指针p指向的那个变量,比如说之前有int a=5int *p=a;那么p的值是a的地址,也就是指针p指向a,*p则等于a的值,即*p=5。
(2)&,则是引用,比如说有定义int a=5;再定义int b=&a;那么这里的b则引用a的值,即b=5,而再给b赋值:b=10,a的值也会变为10。
(二)函数定义里的参数*和&的区别:
先定义有int x=0;和int *p=x;
1、若定义函数: void fun_1(int a){ a=5;} , 则调用:fun_1(x); 之后,x还等于0;因为fun_1函数只改变了形参a的值,a只是fun_1函数里的局部变量,调用fun_1(x)相当于是“a=x;a=5;”,x没变;
2、若定义函数:void fun_2(int &a){ a=5;} , 则调用:fun_2(x); 之后,x等于5;因为这里的a引用了x的值;
3、若定义函数:void fun_3(int *a){ *a=5;} , 则调用:fun_3(p); 之后,x也等于5;因为fun_3函数的参数a是一个指针,相当于a=p;*a则与*p指向同一地址,改变*a即改变*p即x
[分割线这部分引用](http://blog.csdn.net/qq_15037231/article/details/51901196)  
------------------------傲娇的分割线------------------------------



















  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值