按非降序建立n个元素的线性表

Status CreatAscend(LinkList &L,int n)

int j;
LinkList p,q,s;
if(n<=0)
return ERROR;
InitList(L);
printf("请输入%d个元素:\n",n);
s=(LinkList)malloc(sizeof(LNode)); // 第一个结点
scanf("%d",&s->data);
s->next=NULL;
L->next=s;
for(j=1;j<n;j++)
{
s=(LinkList)malloc(sizeof(LNode)); // 其余结点
scanf("%d",&s->data);
q=L;p=L->next;

while(p&&p->data<s->data) // p没到表尾,且所指元素值小于新值
{
q=p;
p=p->next; // 指针后移
}
s->next=q->next; // 元素插在q的后面
q->next=s;
}
return OK;
}

建立n个元素的线性表,然后对表中元素按非降序排序

//将链表按升序排序
void SortList(LinkList &L)
{
LinkList p=L->next;
int t1,t2;
int length=ListLength(L);
int m[100],n[100];
int t=0;
int i,j;
while(p)
{
m[t]=p->coe;
n[t]=p->exp;
t++;
p=p->next;
}

for(i=1;i<length;i++)
{
for(j=0;j<length-1;j++)
{
if(n[j]>n[j+1])
{
t1=n[j];
n[j]=n[j+1];
n[j+1]=t1;
t2=m[j];
m[j]=m[j+1];
m[j+1]=t2;
}
}
}
LinkList q;
p=L;
for(i=0;i<length;i++)
{
q=(LinkList)malloc(sizeof(LNode));
q->coe=m[i];
q->exp=n[i];
p->next=q;
p=q;
}
p->next=NULL;
}

原文地址:https://www.cnblogs.com/Dearmyh/p/10004600.html

时间: 2024-11-12 10:45:39

按非降序建立n个元素的线性表的相关文章

[经典面试题]给定一个有序(非降序)数组A,可含有重复元素,求最小的i使得A[i]等于target,不存在则返回-1

[题目] 给定一个有序(非降序)数组A,可含有重复元素,求最小的i使得A[i]等于target,不存在则返回-1. [分析] 此题也就是求target在数组中第一次出现的位置.这里可能会有人想先直接用原始的二分查找,如果不存在直接返回-1, 如果存在,然后再顺序找到这个等于target值区间的最左位置,这样的话,最坏情况下的复杂度就是O(n)了,没有完全发挥出二分查找的优势. 这里的解法具体过程请参考实现代码与注释. [代码] /*********************************

【编程题目】请修改 append 函数,利用这个函数实现两个非降序链表的并集

42.请修改 append 函数,利用这个函数实现(链表):两个非降序链表的并集,1->2->3 和 2->3->5 并为 1->2->3->5另外只能输出结果,不能修改两个链表的数据. 感觉网上理解题意略有不同,我理解的题意: 只是输出最后的结果,不用生成一个新的链表,也不修改原有链表. 给的数据非降序就是 1 1 2 2 3 这样可以有重复数字的递增 输出时,不显示重复的数字. 基于这些理解,题目不难,代码如下: /* 42.请修改 append 函数,利用这

hdu 1806 Frequent values(给定一个非降序数组,求任意区间内出现次数最多的数的次数)

1.题目解析可见<训练指南>P198 2代码: #include<cstdio> #include<cstring> #include<cmath> #define Min(a,b) ((a)<(b)?(a):(b)) #define Max(a,b) ((a)>(b)?(a):(b)) #define N 100005 #define INF 1<<30 using namespace std; int a[N]; int valu

POJ 3666 Making the Grade(数列变成非降序/非升序数组的最小代价,dp)

传送门: http://poj.org/problem?id=3666 Making the Grade Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9468   Accepted: 4406 Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more than FJ would lik

数据结构之 线性表---有序链表的建立

mxjj130304杨少鹏(13110581086)        注销 数据结构实验之链表六:有序链表的建立 数据结构实验之链表六:有序链表的建立 Time Limit: 1000MS    Memory limit: 65536K 题目描述 输入N个无序的整数,建立一个有序链表,链表中的结点按照数值非降序排列,输出该有序链表. 输入 第一行输入整数个数N: 第二行输入N个无序的整数. 输出 依次输出有序链表的结点值. 示例输入 6 33 6 22 9 44 5 示例输出 5 6 9 22 3

c语言描述简单的线性表,获取元素,删除元素,

1 //定义线性表 2 #define MAXSIZE 20 3 typedef int ElemType; 4 typedef struct 5 { 6 ElemType data[MAXSIZE]; //这是数组的长度,从0开始,也就是最大长度 7 int length; //这是线性表的长度,表示线性表已经存储了多少个元素 8 9 }SqList; 10 /* 11 ************************** 12 ************************** 13 */

python小练习:给定一个非空且为正整数的列表 按重复次数 降序排列输出

假设有个列表  a=[1,1,1,2,2,4,5,5,5,5] (非空且为正整数) 那么根据要求 最终输出的形式为  5,1,2,4  (按重复次数 降序排列输出) 代码实现及解释: a=[1,1,1,2,2,4,5,5,5,5]num=[] for i in a: s = a.count(i) num.append(s)#取出数字出现的次数 放进num中 num1 = sorted(num,reverse=True)# 降序排列num 并赋值给num1num2=list(set(num1))#

怎么实现元素ol的降序排序显示

首先介绍一下什么是ol元素.这里直接引用MDN里面的定义:The HTML <ol> Element (or HTML Ordered List Element) represents an ordered list of items.也就是说这个元素的包含的li元素是带有数字序号的.为了更好阐述下面介绍的几种方法,我们首先写出一个有序列表: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv=

2015华为机试—— 输入整型数组和排序标识,对其元素按照升序或降序进行排序

接口说明 原型: void sortIntegerArray(Integer[] pIntegerArray, int iSortFlag); 输入参数: Integer[] pIntegerArray:整型数组 int  iSortFlag:排序标识:0表示按升序,1表示按降序 输出参数: 无 返回值: void 这题比较简单,也没什么思路好说,直接看代码 代码如下: public final class Demo { // 功能:输入整型数组,对其元素按照升序或降序进行排序 // 输入:pI