| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 大可爱 于 2018-11-1 16:30 编辑  
 
算法 : 在长度为n 的线性表A的第i 个位置插入一个新数据元素item 
#define MaxSize 1000 
ElemType A[MaxSize] ; 
int n ; 
void INSERTLIST (ElemType A[],int &n,int i,ElemType item) 
{ 
        int j; 
        if (n == MaxSize || i < 1 || i > n+1) 
        { 
                ERRORMESSAGE ("表满或插入位置不正确!");/*插入失败*/  
        } 
        for (j = n-1;j >= i-1;j--) 
        { 
                A[j+1] = A[j];                                                        /*数据元素依次后移一个位置*/  
        } 
        A[i-1] = item;                                                                /*将item插入表的第i个位置 */  
        n++;                                                                                /*表的长度加1*/  
 }  
自己对这个算法的形参不是很理解,写了个代码 
#include<stdio.h>  
#define MaxSize 5 
int A[MaxSize]; 
int n; 
 
void INSERTLIST (int A[],int &n,int i,int item ) 
{ 
         
        if (n == MaxSize || i < 1 || i > n+1) 
        { 
                printf ("表满或插入位置不正确!");/*插入失败*/  
                return ; 
        } 
        int j; 
        //n++; 
        for (j = n-1;j >= i-1;j--) 
        { 
                A[j+1] = A[j];                                                        /*数据元素依次后移一个位置*/  
        } 
        A[i-1] = item;                                                                /*将item插入表的第i个位置 */  
        n++;                                                                                /*表的长度加1*/  
 }  
 
int main() 
{ 
    int a[100] = {10,20,30,40}; 
    n = 4; 
    INSERTLIST (a,n,2,5); 
    for (int i = 0; i < n; i++) 
    { 
        printf("%d ",a[i]); 
    } 
     
    return 0; 
} 
 
 
 
 
MaxSize 在这里是线性表的最大长度,也就是这个线性表的容量; 
n表示当前线性表的有效数据长度(线性表实际上放了多少数据) 
不是同一个东西。 
 
当放满的时候,如果还要求放进去,应当做相应处理。 
 
printf ("表满或插入位置不正确!");/*插入失败*/  
                return ; 
 
 
 
 |   
- 
 
 
 
 
 
 
 
 |