配色有点恶心,随便弄了点颜色 ,这样看着方便一点,这里完全使用了指针来操作数组


这个算很简单的了,先给些简单的,看看大家的反响吧,我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;
 
}