#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,...