考试题目

#define _CRT_SECURE_NO_DEPRECATE


#include "stdio.h"
#include "stdlib.h"
#include "conio.h"


typedef struct linked_list linked_list;
struct linked_list{
	int num;
	linked_list * next;
};


linked_list list = { 0, NULL };
int count = 0;

void display(){
	linked_list * p = list.next;
	int i = 0;

	puts( "列表输出:" );
	while( p != NULL ){
		printf( "%d: %d\n", i, p->num );
		p = p->next;
		i++;
	}

	puts( "输入次数:" );
	printf( "%d\n", count );

	_getch();
}

void input(){
	linked_list * p = &list;
	linked_list * tmp = NULL;
	int n;

	printf( "请输入数字:" );
	scanf( "%d", &n );

	tmp = ( linked_list * )malloc( sizeof( linked_list ) );
	tmp->num = n;
	tmp->next = NULL;

	while( NULL != p->next ){

		if( p->next->num > n ){

			tmp->next = p->next;

			p->next = tmp;

			count++;
			
			return;
		}

		p = p->next;
	}

	p->next = tmp;

	count++;
}

void delnum(){
	linked_list * p = &list;
	linked_list * tmp = NULL;
	int id = 0;
	int i;

	if( NULL == list.next ){
		return;
	}

	printf( "请输入数字ID:" );
	scanf( "%d", &id );

	for( i = 0; i < id; i++ ){
		p = p->next;

		if( NULL == p->next ){
			return;
		}
	}

	tmp = p->next;
	p->next = p->next->next;

	free( tmp );
}

void average(){
	linked_list * p = list.next;
	int sum = 0;
	int i = 0;

	if( NULL == list.next ){
		return;
	}

	while( NULL != p ){
		sum += p->num;
		i++;
		p = p->next;
	}

	puts( "平均数为:" );
	printf( "%d\n",sum / i );

	_getch();
}

void maxnum(){
	linked_list * p = NULL;
	int max;

	if( NULL == list.next ){
		return;
	}
	else{
		max = list.next->num;
	}

	p = list.next->next;

	while( NULL != p ){
		if( p->num > max ){
			max = p->num;
		}

		p = p->next;
	}

	puts( "最大数为:" );
	printf( "%d\n",max );

	_getch();
}

void minnum(){
	linked_list * p = NULL;
	int min;

	if( NULL == list.next ){
		return;
	}
	else{
		min = list.next->num;
	}

	p = list.next->next;

	while( NULL != p ){
		if( p->num < min ){
			min = p->num;
		}

		p = p->next;
	}

	puts( "最小数为:" );
	printf( "%d\n",min );

	_getch();
}

void menu(){
	int key = '\0';

	while( key != '0' ){
		system( "cls" );
		puts( "1.列表输出" );
		puts( "2.输入" );
		puts( "3.删除" );
		puts( "4.平均值" );
		puts( "5.最大值" );
		puts( "6.最小值" );
		puts( "0.退出" );

		key = _getch();

		switch( key ){
		case '1':{
			display();
				 }break;
		case '2':{
			input();
				 }break;
		case '3':{
			delnum();
				 }break;
		case '4':{
			average();
				 }break;
		case '5':{
			maxnum();
				 }break;
		case '6':{
			minnum();
				 }break;
		}
	}
}

int main(){

	menu();

	return 0;
}

  

posted @ 2014-03-21 15:54  wrule  阅读(149)  评论(0编辑  收藏  举报