线性表中插入元素的实现,有兴趣可以看一下

配色有点恶心,随便弄了点颜色 ,这样看着方便一点,这里完全使用了指针来操作数组
这个算很简单的了,先给些简单的,看看大家的反响吧,我c语言也不是特别好,所以还希望大家可以靠电脑社这个平台来相互学习下
有关java 和python的大家也可以找我交流 
以后会经常发这样的帖子      
                                                                                                 ---------其实我不坏(王涛)
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define LIST_INIT_SIZE    100
#define LISTINCREMENT     10
//这里是以int类型来做个例子,elem可以是任意类型,换成ElemType就好了
typedef   struct {
         int   length;
         int   *elem ;
         int  listsize;
}SqList;

//线性表初始化
SqList  InitList_Sq (SqList  L ){
// 为容器分配存储空间
    L.elem = (int *) malloc ( LIST_INIT_SIZE * sizeof (int));
    int k = 0;
    if(!L.elem) exit (1);
    L.length = 0;
    L.listsize =  LIST_INIT_SIZE ;
     return  L;


//在顺序线性表L中第i个位置之前插入新的元素e 
//线性表的顺序表示在插入元素的时候需要把插入位置之后的元素都向后移动一个位置 
//L:将要被操作的线性表,i要插入的位置,e要插入的元素 
SqList  ListInsert_Sq (SqList L, int  i , int  e){
     printf ( "被插入的元素是%d\n" ,e);
     //首先判断i值是否合法
     if (i<1||i>L.length+1){ printf ( "你选择要插入的位置已经超出了线性表的界限\n" );return L;}
     if ( L .length >=  L .listsize){
         int  *newbase = (int *) realloc ( L .elem,( L .listsize+ LISTINCREMENT )* sizeof (int));
         if (!newbase) exit (1);
         L .elem = newbase;
         L .listsize =  L .listsize+ LISTINCREMENT ;
         printf ( "内存不足,需要扩充" ); 
    } 
     int  *q = ( L .elem+i-1);                                                  //要插入的位置  
     printf ( "插入位置的当前值是 %d\n" , *q); 
     int  *p;
     if ( L .length>0)
     for  (p = ( L .elem+( L .length-1));p>=q;--p)
    {
     printf ( "表尾的元素值是%d\n ",*( L .elem+(L.length-1)));
    *(p+1) = *p;                                                                  //从最后一个元素开始把元素依次向后移动一个位置 
     printf ( "被移动的元素是%d\n" ,*(p+1));
    }
    *q = e;
    ++ L .length;
     return  L ;
}


void  printList (SqList  L ){
      printf ( "-----------------------------\n" );
      int  i;
      int  array[ L .length];
      for (i = 0;i<( L .length);i++){
           array[i] = *( L . elem+i);
            printf (" L [%d]=%d\n",i,array[i]);       
     }
      printf ( "-----------------------------\n" );
}

int  main ( void ){
    SqList L;
     L InitList_Sq ( L );
    printf("%d\n", L .length);
     L ListInsert_Sq (L,5,1);
     L ListInsert_Sq (L,1,1);
     L ListInsert_Sq (L,1,1);
     L  =  ListInsert_Sq (L,1,2); 
     L ListInsert_Sq (L,1,3);
     L ListInsert_Sq (L,1,4);
     printf ( "%d\n" , L .length);
     printList ( L );
     system ( "PAUSE" );
     return  0;
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值