#include<stdio.h>
#include<stdlib.h>
typedef struct time
{
char year[5];
char month[3];
char day[3];
struct time *next;
}Node;
Node *createLList(int );
Node *sortLList(Node *);
void print(Node *);
int main()
{
int n;
Node *head,*newhead;
printf("请输入结点个数:\n")...
==========================
功能:选择排序(由小到大)
返回:指向链表表头的指针
==========================
*/
/*
选择排序的基本思想就是反复从还未排好序的那些节点中,
选出键值(就是用它排序的字段,我们取学号num为键值)最小的节点,
依次重新组合成一个链表。
我认为写链表这类程序,关键是理解:
head存储的是第一个节点的地址,head->next存储的是第二个节点的地址;
任意一个节点p的地址,只能通过它前一个节点的next来求得。
单向链表的选择排序图示:
---->[...
/*
学生信息删除函数,删除指定学号的学生信息,
传递给该函数的实参是所建立的单链表的头指针L、要删除的学生学号。
若删除成功,返回值为1,否则,返回值为0。
*/
#include<stdio.h>
#include<stdlib.h>
#define N 2
typedef struct stud
{
int num;
char name[10];
float score[N+1];
struct stud *next;
}NODE;
NODE *create();
int Delete(NODE **p_hea...
/*假设有两种微生物 X 和 Y
X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的 X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?
#include<stdio.h>
int main()
{
long int x=10,y=89;
for(int i=1;i<=120;i++)
{
if(i%2==1)
y-=x...
//用二分法查找数组中元素
#include<stdio.h>
#include<stdlib.h>
#define N 15
int main()
{
int arr[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int low=0; //记录下标
int high=N-1;
int middle;
int value; //需要查找的数
int flag;
printf("输入要查找数据:");
scanf("%d",&value);
if(value...
/*指针实现M*N数组array[M][N]的练习
*指针*p实现
*指针数组*q[N]实现
*array实现
*/
#include <stdio.h>
#define M 5
#define N 6
int main()
{
int array[M][N];
int cout=1;
int *p,*q[N],**r;
int k=0,l=0,v=0;
for(int x=0;x<M;x++) //数组用1,2,3。。。初始化
{
for(int y=0;y<N;y++)
{
...
//排列组合问题
//没有考虑重复元素删除
#include <stdio.h>
#include <stdlib.h>
//从n个元素的数组a中,取m个元素的组合
bool zuhe(char a[],int n,int m)
{//p[x]=y 取到的第x个元素,是a中的第y个元素
int index,i,*p;
p=(int*)malloc(sizeof(int)*m);
if(p==NULL)
{
return false;
}
index...
/*输出如下类型的三角矩阵
1 2 3 4 5
12 13 14 6
11 15 7
10 8
9
*/
#include<cstdio>
void main( )
{
const int MAX=50;
int a[MAX][MAX];
int num; //行数
printf("正整数num=");
scanf("%u",&num);
int counter=1; //数字的序号
int k=0; ...
/*
*求取矩阵鞍点的算法
*/
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 3
int main()
{
int arr[M][N]={1,1,1,3,1,2,1,3,1};
int flag; //鞍点的标志
int x,y; // 记录鞍点的行号和列号
int count=0; //记录鞍点的个数
int temp;
int i,j,...