c语言
一氓
或有重开之日
展开
-
写一个算法交换单链表中p所指结点与其后继结点-21算法题
本题为算法题,交换的是结点,而不是结点的值注意题目是交换结点,不是交换结点的值。设q为1,p为2,r为3,r->next为4.原来为12341指向3,2指向4,3指向2.最终顺序为1324结果如图所示,与交换了值的结果相同,但其本质上是交换了结点代码如下#include <stdio.h>#include <stdlib.h>//定义结点结构typedef struct LNode{ int data; struct原创 2021-11-28 22:15:57 · 1694 阅读 · 1 评论 -
删除循环链表中某一结点的前驱结点-21编程
在一个结点数大于1,无头结点的循环链表,s指向其中某个节点,请写一个函数删除他的前驱结点typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;void(LNode *s){ LNode *p1,*p2,*p3; p1=s; p2=p1->next; p3=p2->next; while(p3!=s) { p3=p3原创 2021-11-28 21:38:54 · 1583 阅读 · 0 评论 -
扫描链表B是否为链表A的字序列-20算法2
扫描链表B是否为链表A的字序列#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L){ L=(LNode *)malloc(sizeof(LNode)); if(L==NULL) return false; L-&原创 2021-11-28 20:53:24 · 104 阅读 · 0 评论 -
有两个有序链表A和B,使其在合并后仍然有序-19算法题
又一个元素依次递增的单链表和一个元素依次递减的单链表,请设计一个算法将两个单链表合并成一个新的有序的单链表由于不确定A中最大值和B中最小值的关系,所以不能用头插法来合并第一步,将B接到A的后面,相当于A和B合并成新的链表A第二步,对新的链表A进行排序#include <stdio.h>#include <stdlib.h>//定义结点结构typedef struct LNode{ int data; struct LNode *next;}LN原创 2021-11-27 10:57:48 · 492 阅读 · 0 评论 -
在有序链表中插入一个元素,使它仍然有序-19编程题
构造一个元素递增的有序单链表,将结点news插入到该单链表中,使其仍然有序。#include <stdio.h>#include <stdlib.h>//定义结点结构typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//初始化链表bool InitList(LinkList &L){ L=(LNode *)malloc(sizeof(LNode)原创 2021-11-27 10:31:13 · 2184 阅读 · 0 评论 -
输入一组整形数据,从大到小存入有序列表中-18编程题
输入一组整形数据,从大到小存入有序列表中#include <stdio.h>#include <stdlib.h>//定义结点结构typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//初始化链表bool InitList(LinkList &L){ L=(LNode *)malloc(sizeof(LNode)); if(L==NULL)原创 2021-11-27 09:58:06 · 482 阅读 · 0 评论 -
删除链表中data域最小的结点-17算法题
删除链表中最小值结点#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L){ L=(LNode *)malloc(sizeof(LNode)); if(L==NULL) return false; L->ne原创 2021-11-26 22:51:26 · 324 阅读 · 0 评论 -
链表的拆分-16算法题
将一个链表拆成A,B两个链表,A中只含有data域为奇数的结点,B中只含有data域为偶数的结点#include <stdio.h>#include <stdlib.h>//定义链表结构typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//初始化链表bool InitList(LinkList &L){ L=(LNode *)malloc(siz原创 2021-11-26 21:58:00 · 234 阅读 · 0 评论 -
建立一个链表然后由小到大依次输出链表的值-16编程
建立一个链表然后由小到大依次输出链表的值#include <stdio.h>#include <stdlib.h>//定义链表结构typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//初始化链表bool InitList(LinkList &L){ L=(LNode *)malloc(sizeof(LNode)); if(L==NULL)原创 2021-11-26 21:09:27 · 330 阅读 · 0 评论 -
算法题-15删除值域重复的结点
删除链表中值域重复的结点#include <stdio.h>#include <stdlib.h>//定义链表结构typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;//初始化链表bool InitList(LinkList &L){ L=(LNode *)malloc(sizeof(LNode)); if(L==NULL) return原创 2021-11-26 20:43:15 · 243 阅读 · 0 评论 -
链表值排序-16编程题
输入整数,以@结束,建立一个链表,然后从小到大依次输出链表的值#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data1; struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L){ //LinkList L; L=(LNode *)malloc(sizeof(LNode));原创 2021-11-25 16:38:46 · 147 阅读 · 0 评论 -
链表的结点排序-13编程题
构造一个链表:该链表包含两个整数,将所有结点按照第一个整数从小到大排序,如第一个整数相同,则按照第二个整数从小到大排序#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data1,data2; struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L){ //LinkList L; L=原创 2021-11-25 16:26:09 · 618 阅读 · 0 评论 -
用公式求e
求1+1/2!+1/3!+1/4!+直到最后两项之差小于输入的x时结束#include <stdio.h>double an(int n){ if(n==1) return 1; else return an(n-1)/n;}int main(void) { double an(int n); double x,sum=1; int n; scanf("%lf",&x); for(n=2;an(n-1)-an(n)原创 2021-11-23 10:35:38 · 291 阅读 · 0 评论 -
计算1-1/3+1/5-1/7+1/9…的和,直到最后一项小于x为止
#include <stdio.h>#include <math.h>void SUM(int n,float x,float sum){ if(1.0/(2*n+1)<x) printf("%f",sum); else if(n%2) { sum=sum-1.0/(2*n+1); SUM(n+1,x,sum); } else { sum=sum+1.0/(2*n+1);原创 2021-11-22 22:43:14 · 1873 阅读 · 0 评论 -
输入n,输出1/2的n次方 的前n项和
输入n,输出1/2的n次方 的前n项和//输入n,输出1/2的n次方 的前n项和#include <stdio.h>#include <string.h>#include <math.h>void fun(int n,float sum)//考试时不应有sum{ if(n>0) { sum+=1.0/pow(2,n); fun(n-1,sum); } else pr原创 2021-11-22 22:15:33 · 1770 阅读 · 0 评论 -
判断输入的字符串是否为回文
判断输入的字符串是否为“回文”#include <stdio.h>#include <string.h>int main(void) { char a[100],*p,*q; int flag=0; fgets(a,100,stdin); a[strlen(a)-1]='\0'; // fputs(a,stdout); p=a; q=&a[strlen(a)-1]; while(q-p>0)原创 2021-11-20 22:55:42 · 1029 阅读 · 0 评论 -
2013年
#include <stdio.h>int main(void) { int k,n,i,j; long m,sum; m=0;sum=0; scanf("%d %d",&n,&k); printf("sum="); for(i=0;i<n;i++) { m=k; for(j=0;j<i;j++) { m=m*10+k;原创 2021-11-17 10:35:27 · 815 阅读 · 0 评论 -
将str1,str2交替合并到str3
将str1,str2交替合并到str3,如其中一个合并完毕则将剩余字符串直接加到str3后#include <stdio.h>#include <string.h>int main() { char str1[100],str2[100],str3[200]; fgets(str1,100,stdin);//代替gets函数 /* //fgets会读入换行符,这里把换行符删掉 char *a=str1; while(*a原创 2021-11-16 11:05:20 · 1034 阅读 · 0 评论 -
删除字符串中的字符
#include <stdio.h>#include <string.h>int main(void) { char a[100],b[100],c[200]; int i,j; fgets(a,100,stdin); fgets(b,100,stdin); printf("a=\n"); fputs(a,stdout); printf("b=\n"); fputs(b,stdout);原创 2021-11-09 22:25:40 · 296 阅读 · 0 评论 -
输出图形如下
#include <stdio.h>int main(void) { int i,j,n; scanf("%d",&n); for(i=1;i<=n;i++) { // count=0; for(j=n;j>i;j--) { printf(" "); // count++; } //printf("%d",.原创 2021-11-10 20:51:37 · 890 阅读 · 0 评论 -
输入的字母后移三位
#include <stdio.h>int main(void) { char a[100],b[200],c; fgets(a,100,stdin); for(int i=0;a[i]!='\0';i++) { if(a[i]>='A'&&a[i]<='Z') { int b=(a[i]-'A'+3)%26; printf("%d\n",.原创 2021-11-10 21:27:22 · 2673 阅读 · 1 评论 -
求2的N次方分之一的和,第n项不超过x
#include <stdio.h>#include <math.h>double SUM(double x,int n,double sum){ if((1.0/pow(2.0,n))<x) return sum; else { sum+=1.0/pow(2.0,n); return SUM(x,n+1,sum); } }int main(void) { double x,y;原创 2021-11-10 22:08:12 · 2397 阅读 · 0 评论 -
输入三个数判断是否为三角形
#include <stdio.h>int main(void) { void swap(int &x,int &y); int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a>b) swap(a,b); if(a>c) swap(a,c); if(b>c) swap(b,c); if(a+b>c) printf("YES"); e原创 2021-11-16 10:18:11 · 491 阅读 · 0 评论 -
与10个数平均数最近的数
17.1输入10个数,找出与这十个数平均数最接近的数#include <stdio.h>#include<math.h>int main() { int a[10],i,flag; //float av=0; // double min; double min,ave=0; for(i=0;i<10;i++) { scanf("%d",&a[i]); ave+=a[i];原创 2021-11-07 22:00:44 · 1423 阅读 · 0 评论