插入一个元素到有序顺序表中,使其再次有序

代码:

#include <stdio.h>

/*
题目:数据结构题集17页2.11
设顺序表中数据元素递增有序,试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
算法:逆序遍历顺序表找合适的插入new_elem的位置,并将其插入
*/

#define maxlen 50
typedef struct{
    int arr[maxlen];
    int length;
}Seqlist;

void print_SQ(Seqlist list){
    for(int i=0; i<list.length;i++){
        printf("%d  ",list.arr[i]);
    }
    printf("\n");
}

int main(void)
{
    Seqlist list;
    list.arr[0]=1;list.arr[1]=6;list.arr[2]=9;list.arr[3]=30;
    list.length = 4;


    if(list.length+1 > maxlen){
        return -1;
    }
    int i;
    //要插入链表的数值
    int new_elem = 6;
    //更新表长
    ++list.length;
    //如下是插入new_elem操作:逆序遍历顺序表找合适的插入new_elem的位置,并将其插入
    for(i=list.length-1;i>=0;i--){
        if(list.arr[i] >= new_elem){
            //当前元素向后移动赋值
            list.arr[i+1] = list.arr[i];
        }else{
            list.arr[i+1] = new_elem;
            break;
        }
//        print_SQ(list);
    }
    //打印顺序表
    print_SQ(list);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/linking_lin/article/details/82534470
今日推荐