• 已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序


    已知顺序表L递增有序,写一算法,将X插入到线性表的适当位置,以保持线性表的有序,逆置。

    本没有什么难度,可是写作业本上,不用DEBUG也还是出现了几个错误。

    切忌眼高手低。

    #include <iostream>
    #include <cstdio>
    #include <ctime>
    #include <cstdlib>
    #include <algorithm>
    using namespace std;
    #define MAX 1000
    typedef int ElemType;
    
    typedef struct List{
    	int elem[MAX];
    	int last;
    }List;
    
    void CreateList(List *L)
    {
    	for(int i = 0; i <= L->last; i++)
    	{
    		L->elem[i] = rand() % 100;//随机生成数据
    	}
    }
    
    void ShowList(List *L)//顺序表输出
    {
    	for(int i = 0; i <= L->last; i++)
    	{
    		cout << L->elem[i] << " ";
    	}
    	cout << endl;
    }
    
    void InsertList(List *L, ElemType e)
    {
    	L->last++;
    	int i, j;
    	if(e <= L->elem[0])
    	{
    		for(j = L->last; j >= 1; j--)
    		{
    			L->elem[j] = L->elem[j-1];
    		}
    		L->elem[0] = e;
    	}
    	else if(e >= L->elem[L->last - 1])
    	{
    		L->elem[L->last] = e;
    	}
    	else
    	{
    		for(i = 0; i < L->last; i++)
    		{
    			if(e >= L->elem[i] && e <= L->elem[i+1])
    			{
    				for(j = L->last ; j >= i + 2; j--)
    				{
    					L->elem[j] = L->elem[j-1];
    				}
    				L->elem[i+1] = e;
    				break;
    			}
    		}
    	}
    }
    
    void SortList(List *L)
    {
    	sort(L->elem, L->elem + L->last + 1);
    }
    
    void ReverseList(List *L)
    {
    	int i, j;
    	ElemType e;
    	j = L->last;
    	for(i = 0; i <= j; i++,j--)
    	{
    		e = L->elem[i];
    		L->elem[i] = L->elem[j];
    		L->elem[j] = e;
    	}
    }
    
    int main()
    {
    	List L;
    	ElemType e;
    	L.last = 0;
    	memset(L.elem, 0, sizeof(L.elem));//顺序表初始化
    
    	srand((unsigned)time(NULL));
    	int length = rand() % 10;
    	cout << "元素的个数为:" << length << endl; 
    	L.last = length - 1;
    	CreateList(&L);//顺序表建立
    	SortList(&L);//顺序表排序
    
    	cout << "插入元素之前:" << endl;
    	ShowList(&L);//顺序表输出
    	cout << endl;
    
    	e = rand() % 100;//随机确定生成数据的个数
    	cout << "插入的元素为:" << e << endl << endl;
    	InsertList(&L, e);//输出表插入元素
    	cout << "插入元素之后:" << endl;
    	ShowList(&L);
    
    	cout << "逆置后的顺序表:" << endl;
    	ReverseList(&L);
    	ShowList(&L);
    }





  • 相关阅读:
    mysql 数据库之存储过程语法
    数据库之多表查询
    mysql 查询之数据语句分类
    mysql 之分组查询
    mysql之查询排序
    mysql 之分页查询
    简述Hibernate常见优化策略
    如何理解Hibernate的延迟加载机制?
    hibernate中Session的load和get方法的区别是什么?
    HttpServlet容器响应Web客户请求流程?
  • 原文地址:https://www.cnblogs.com/lgh1992314/p/5835158.html
Copyright © 2020-2023  润新知