当前位置:首页 » 编程语言 » c语言中什么是小元素
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中什么是小元素

发布时间: 2022-06-10 14:48:46

❶ 用c语言实现建立顺序表 并查找最小的元素

//给你个完整的
#include <malloc.h>
#include<stdlib.h>
#include <stdio.h>
typedef struct Lnode
{int data;
struct Lnode *next;
}*Linklist,Lnode;
void CreatList(Lnode *L) /*建立链表函数*/
{ Lnode *p;
int value;
L->next=NULL;
while (1) /*当输入非0数值时*/
{scanf( "%d",&value);
if (value==NULL)
return;
p=(Lnode *)malloc(sizeof(Lnode)); /*建立P链表*/
p->data=value;
p->next=L->next; /*把后输入的插到前面*/
L->next=p;
}
}
void paixu(Lnode *L)
{
Linklist r,q,small;int temp;
for(r=L->next;r->next!=NULL;r=r->next)
{small=r;
for(q=r->next;q;q=q->next) /*找到链表中最小元素*/
if(q->data<small->data)
small=q;
if(small!=r)
{temp=r->data;
r->data=small->data; /*把最小的数值换到P指针所指的位置数值上(原P指针的next指向不变)*/
small->data=temp; /*把原先p指针所指位置的数值填入被置换出的最小元素位置*/
}
}
printf("正在对新链表进行排序……\n");
}
void PrintList(Lnode *L) /*打印链表函数*/
{
Lnode *p=L->next; /*带头节点,把指针置于第一个数*/
if(p==0)
{printf("链表为空");}
else
printf("链表为:");
{while(p)
{
printf("%d>>", p->data);
p=p->next;
}
}
printf("\n");
}
inter(Lnode *L,int i)
{
Lnode *k=L->next;
while(k)
{if (k->data==i)
return 1;
k=k->next;
}
return 0;
}
int ListInsert_L(Lnode *L, int i, int e)
{
Lnode *p=L->next;
Lnode *s;
int j=0;
while (p && j<i-1) {p=p->next; ++j;}
if (!p || j>i-1) return 0;
s=(Lnode *)malloc(sizeof(Lnode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete_L(Lnode *L,int i)
{
Lnode *p=L->next;
int j=0;
Lnode *q;
while (p->next && j<i-1) {p=p->next; ++j;} /*找出第i节点,并令p指向其前趋*/
if (!p->next || j>i-1) return 0;
q=p->next;
p->next=q->next;
free(q);
return 1;
}
main()
{
int sign,sign1,signa,signb,signc,i,x,ca,cb,cc;
int choice=1;
Lnode *A,*B,*C,*D,*E,*L,*p,*q,*n,*m;
A=(Lnode *)malloc(sizeof(Lnode));
B=(Lnode *)malloc(sizeof(Lnode));
C=(Lnode *)malloc(sizeof(Lnode));
D=(Lnode *)malloc(sizeof(Lnode));
E=(Lnode *)malloc(sizeof(Lnode));
printf("\t 《潇的数据结构课程设计——单链表的级别操作》\n\n");
while (choice)
{
printf("\t 请选择您想进行的操作(按任意键退出程序):\n 1:对A链表操作 \n 2:对B链表操作 \n 3:两链表运算 \n \n 您的选择是:");
scanf("%d",&sign1);
if (sign1==1)
{L=A;
ca=1;
while (ca)
{printf("\t 请选择对A链表进行的操作:\n 1:建立链表 \n 2:对链表排序 \n 3:在链表中插入元素 \n 4:在链表中删除元素 \n 5:返回上一级菜单 \n 您的选择是:");
scanf("%d",&signa);
switch(signa)
{
case 1:
printf("\n请输入链表元素(输入0结束)\n");
CreatList(A);
PrintList(A);
break;
case 2:
printf("对A链表进行排序,结果为:\n ");
paixu(A);
PrintList(A);
break;
case 3:
printf("请输入想要插入的位置及插入的数值(以逗号分隔): ");
scanf("%d,%d",&i,&x);
if (ListInsert_L(L,i,x)==1)
{printf("修改成功!目前A链表为:\n");
PrintList(L);}
else
printf("警告!您输入的插入位置超过链表长度。 \n");
break;
case 4:
printf("请输入想要删除的元素位置: ");
scanf("%d",&i);
if (ListDelete_L(L,i)==1)
{printf("删除元素成功!目前A链表为:\n");
PrintList(L);}
else
printf("警告!您输入的删除位置超过链表长度。 \n");
break;
case 5:
ca=0;
break;
default:
printf("警告!只能选择1-5。 \n");
break;
}
}
}
else if (sign1==2)
{L=B;
cb=1;
while (cb)
{printf("\t 请选择对B链表进行的操作:\n 1:建立链表 \n 2:对链表排序 \n 3:在链表中插入元素 \n 4:在链表中删除元素 \n 5:返回上一级菜单 \n 您的选择是:");
scanf("%d",&signb);
switch(signb)
{
case 1:
printf("\n请输入链表元素(输入0结束)\n");
CreatList(B);
PrintList(B);
break;
case 2:
printf("对B链表进行排序,结果为:\n ");
paixu(B);
PrintList(B);
break;
case 3:
printf("请输入想要插入的位置及插入的数值(以逗号分隔): ");
scanf("%d,%d",&i,&x);
if (ListInsert_L(L,i,x)==1)
{printf("修改成功!目前B链表为:\n");
PrintList(L);}
else
printf("警告!您输入的插入位置超过链表长度。 \n");
break;
case 4:
printf("请输入想要删除的元素位置: ");
scanf("%d",&i);
if (ListDelete_L(L,i)==1)
{printf("删除元素成功!目前B链表为:\n");
PrintList(L);}
else
printf("警告!您输入的删除位置超过链表长度。 \n");
break;
case 5:
cb=0;
break;
default:
printf("警告!只能选择1-5。 \n");
break;
}
}
}

else if (sign1==3)
{cc=1;
while (cc)
{printf("\t 请选择操作的名称:\n 1:显示当前的A、B链表 \n 2:进行差运算 \n 3:进行交运算 \n 4:进行并运算 \n 5:返回上一级菜单 \n 您的选择是:");
scanf("%d",&signc);
switch(signc)
{
case 1:
printf(" \n 当前A");
PrintList(A);
printf(" \n 当前B");
PrintList(B);
break;
case 2:
p=B->next;
while(p)
{if (!inter(A,p->data))
{m=(Lnode *)malloc(sizeof(Lnode));
m->data=p->data;
m->next=C->next;
C->next=m;
}
p=p->next;
}
printf(" \n 进行差运算,结果为:\n");
PrintList(C);
C=(Lnode *)malloc(sizeof(Lnode)); /*必须再分配一次地址空间以用来把原链表清空,否则每次运行都会使链表元素增加*/
break;
case 3:
p=B->next;
while(p)
{if (inter(A,p->data))
{q=(Lnode *)malloc(sizeof(Lnode));
q->data=p->data;
q->next=D->next;
D->next=q;
}
p=p->next;
}
printf(" \n 进行交运算,结果为:\n");
PrintList(D);
D=(Lnode *)malloc(sizeof(Lnode));
break;
case 4:
*E=*A;
p=B->next;
while(p)
{if (!inter(E,p->data))
{n=(Lnode *)malloc(sizeof(Lnode));
n->data=p->data;
n->next=E->next;
E->next=n;
}
p=p->next;
}
printf(" \n 进行并运算,结果为:\n");
PrintList(E);
E=(Lnode *)malloc(sizeof(Lnode));
break;
case 5:
cc=0;
break;
default:
printf("警告!只能选择1-5。 \n");
break;
}
}
}
else
{
printf("谢谢使用,请按任意键退出!\n");
break;
}
}

return 0;
}

❷ 大神,在C语言中怎么在数组中删除最大和最小的元素

先找到最大元素和最小元素下标。 然后把后续的依次前移即可。

比如

intdel_max_min(int*a,intn)
{
intmaxi,mini,i,j;
maxi=mini=0;
for(i=1;i<n;i++)
if(a[maxi]<a[i])maxi=i;
elseif(a[mini]>a[i])mini=i;
for(i=j=0;i<n;i++)
if(i!=maxi&&i!=mini)
a[j++]=a[i];
returnj;
}

返回的是删除后 a中元素个数。

❸ 什么是组成c语言函数的最小元素

常说的是组成C语言的最小元素是函数
没听说过组成函数的最小元素
如果一定要说的话,那就是表达式了

❹ C语言中求任一一维数组中的最大元素和最小元素,怎么编写

#include <stdio.h>void main( )
{
double a[10],max,min;//输入几个数可以自己决定。
int i;
for(i=0;i<10;i++)
scanf("%lf",&a[i]);
max=min=a[0];
for(i=1;i<10;i++)
{
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
}
printf("max=%lf,min=%lf\n",max,min);
}

❺ C语言求出一维数组中最小元素的值和下标号

你的程序没错误,只是你输入错误,空格和回车都被视为一次输入结束,都好不能作为输入结束符。你那里for循环要输入10次,必须用回车或空格表示输入一次结束。


除非你改为

scanf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",&a[0],&a[1],&a[2],&a[3],&a[4],&a[5],&a[6],&a[7],&a[8],&a[9]);

就可以这样输入:1,2,3,4,5,6,7,8,9,0


❻ C语言中 求数组中的最大元素和最小元素

int mian(void)
main 函数名字写错,,,

❼ c语言作业:从键盘输入一个字符串a,找出其中的最大元素和最小元素

#include<stdio.h>
intmain()
{
charstr[200];
scanf("%s",str);
charmin,max;
intminid,maxid;
inti=0;
min=max=str[0];
maxid=minid=0;
while(str[i]!='')
{
if(str[i]>max)
{
max=str[i];
}
if(str[i]<min)
{
min=str[i];
minid=i;
}
i++;
}
i=0;
while(str[i]!='')
{
if(str[i]==max)
{
printf("最大元素是%c位置%d ",max,i);
}
if(str[i]==min)
{
printf("最小元素是%c位置%d ",min,i);
}
i++;
}

return0;
}

❽ C语言编程:求出一维数组中最小元素的值以及它所在的下标号

//这个程序的好处是能输出所有的最小数的下标,比如1,1,2,3,4中能输出a[0],a[1],而上面三位的不能
#include
<stdio.h>
#define
M
5//自己定义数组的长度
void
main()
{
int
i,n=0,min;
int
a[M];
printf("请输入%d个数,用空格隔开:",M);
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=1;i<M;i++)
if(a[i]<=min)
{
min=a[i];
}
printf("这组数组中最小的数是%d,分别是:\n",min);
for(i=0;i<5;i++)
if(a[i]==min)
printf("a[%d]
",i);
}

❾ C语言编程:求出一维数组中最小元素的值以及它所在的下标号

//这个程序的好处是能输出所有的最小数的下标,比如1,1,2,3,4中能输出a[0],a[1],而上面三位的不能
#include <stdio.h>
#define M 5//自己定义数组的长度
void main()
{
int i,n=0,min;
int a[M];
printf("请输入%d个数,用空格隔开:",M);
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=1;i<M;i++)
if(a[i]<=min)
{
min=a[i];
}
printf("这组数组中最小的数是%d,分别是:\n",min);

for(i=0;i<5;i++)
if(a[i]==min)
printf("a[%d] ",i);
}

❿ C语言 求数组最小元素和次小元素 只学到数组 指针什么的没学过 谢谢

遍历一遍数组就出来了,同时保存两个变量,一个保存最小,一个保存次小。
简单来说就是(假设数组的数据个数是>2的,<=2的情况没有意义排序)
min1 = a[0];//min1最小
min2 = a[1];//min2次小
if (min1 > min2)
swap(min1,min2);//交换
for(i=2,i<n;i++)
{
if (a[i]<min2)
if (a[i]<min1)
{min1 = a[i];}
else
{min2 = a[i];}
}

当然你按照楼上几位的思路做也可以,先将最小和次小赋成相同的值,然后每找到一个比这个更小的就将前一个最小的赋为次小,当前的赋为最小。但不用排序,遍历一次就出来了,排序的话虽然思路更清楚,但效率就低了。