【NJUPT】 数据结构与算法分析_银行排队系统

这篇具有很好参考价值的文章主要介绍了【NJUPT】 数据结构与算法分析_银行排队系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

银行排队系统
【问题描述】
试设计一个银行排队系统,模拟一般银行的日常对外营业服务,包括顾客到达、等待、办理业务及离开等事件。要求体现“先来先服务”的原则,将传统物理的多个顾客排队队列变为一个逻辑队列处理,顾客只需取票(即刻进队,排队),等待叫号即可。
【基本要求】
设计程序,要求能够实现以下功能:
(1)顾客到达银行时能拿到排队号码,并能知道需要等待的人数。如果是VIP顾客,那么能直接进入VIP窗口办理,无需加入普通顾客的等待;
(2)可以查看每个银行窗口正在给第几号顾客办理业务;
(3)顾客离开银行时,可以对银行窗口职员的服务进行评价。

感谢以下两位大佬,salute!

@小白白^

@电脑迷2013

VS2022版:

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include<conio.h>
static int i = 1;
void date();
void CustomerReview();

typedef struct QNode
{
	int bianhao;//队内成员取到的号码
	struct QNode* next;
}QNode, * QueuePtr;

typedef struct
{
	QueuePtr front;//队头指针
	QueuePtr rear;//队尾指针
}Queue;//创建链式队列

void initQueue(Queue* q)//队列的初始化
{
	q->front = q->rear = (QNode*)malloc(sizeof(QNode));
	if (!q->front)//初始化失败退出
	{
		return;
	}
	q->front->next = NULL;
}

Queue s1, s2, s3;//创建三个队列窗口

int shows1()//显示1窗口人员
{
	QNode* p = (QNode*)malloc(sizeof(QNode));
	if (s1.front == s1.rear)
	{//队列为空队列
		printf("当前无排队人员 *\n");
		return 0;
	}
	p = s1.front->next;
	while (p)
	{
		printf("%d ", p->bianhao);
		p = p->next;
	}
	printf("\n");
}

int shows2()//显示2窗口人员
{
	QNode* p = (QNode*)malloc(sizeof(QNode));
	if (s2.front == s2.rear)
	{//队列为空队列
		printf("当前无排队人员 *\n");
		return 0;
	}
	p = s2.front->next;
	while (p)
	{
		printf("%d ", p->bianhao);
		p = p->next;
	}
	printf("\n");
}

int shows3()//显示3窗口人员
{
	QNode* p = (QNode*)malloc(sizeof(QNode));
	if (s3.front == s3.rear)
	{//队列为空队列
		printf("当前无排队人员 *\n");
		return 0;
	}
	p = s3.front->next;
	while (p)
	{
		printf("%d ", p->bianhao);
		p = p->next;
	}
	printf("\n");
}

void show()//总显示窗口
{
	printf("\n\t\t\t\t\t*1号窗口排队人员:");
	shows1();
	printf("\n\t\t\t\t\t*2号窗口排队人员:");
	shows2();
	printf("\n\t\t\t\t\t*3号窗口排队人员:");
	shows3();
	printf("\t\t\t\t\t");
	system("pause");
}


void EnQueue1(Queue* q, int i)//队列插入
{
	QNode* p = (QNode*)malloc(sizeof(QNode));
	p->bianhao = i;
	p->next = NULL;
	q->rear->next = p;
	q->rear = p;
}

int  DeQueue(Queue* q, int e)//队列删除
{
	if (q->front == q->rear)
	{//队列为空队列
		return 1;
	}
	QNode* p = (QNode*)malloc(sizeof(QNode));
	p = q->front->next;
	e = p->bianhao;
	q->front->next = p->next;
	if (q->rear == p)
	{
		q->rear = q->front;
	}
	free(p);
}

void EnQueue()//选择窗口插入
{
	show();
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*请选择窗口服务:\t\t*\n");
	printf("\t\t\t\t\t*\t     1.1号窗口          *\n");
	printf("\t\t\t\t\t*\t     2.2号窗口          *\n");
	printf("\t\t\t\t\t*\t     3.3号窗口          *\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf_s("%d", &a);
	switch (a)
	{
	case 1:
	{
		EnQueue1(&s1, i);
		printf("\t\t\t\t\t*取号成功,你是1号窗口%d号,请等待办理*\n\t\t\t\t\t", i);
		i++;
		break;
	}
	case 2:
	{
		EnQueue1(&s2, i);
		printf("\t\t\t\t\t*取号成功,你是2号窗口%d号,请等待办理*\n\t\t\t\t\t", i);
		i++;
		break;
	}
	case 3:
	{
		EnQueue1(&s3, i);
		printf("\t\t\t\t\t*取号成功,你是3号窗口%d号,请等待办理*\n\t\t\t\t\t", i);
		i++;
		break;
	}
	default:
	{
		printf("\t\t\t\t\t*            无效窗口           *\n\t\t\t\t\t\n");
		printf("\t\t\t\t\t*        ");
		break;
	}
	}
	system("pause");
	system("cls");
}

void vip1(Queue* q, int i)//vip头插
{
	QNode* p = (QNode*)malloc(sizeof(QNode));
	if (q->front == q->rear)
	{
		p->bianhao = i;
		p->next = NULL;
		q->rear->next = p;
		q->rear = p;
	}
	else
	{
		p->bianhao = i;
		p->next = q->front->next;
		q->front->next = p;
	}
}

void vip2()//vip插队
{
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*请选择窗口服务:\t\t*\n");
	printf("\t\t\t\t\t*\t     1.1号窗口          *\n");
	printf("\t\t\t\t\t*\t     2.2号窗口          *\n");
	printf("\t\t\t\t\t*\t     3.3号窗口          *\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf_s("%d", &a);
	switch (a)
	{
	case 1:
	{
		vip1(&s1, i);
		printf("\t\t\t\t\t*取号成功,你是1号窗口%d号,请等待办理*\n\t\t\t\t\t", i);
		i++;
		break;
	}
	case 2:
	{
		vip1(&s2, i);
		printf("\t\t\t\t\t*取号成功,你是2号窗口%d号,请等待办理*\n\t\t\t\t\t", i);
		i++;
		break;
	}
	case 3:
	{
		vip1(&s3, i);
		printf("\t\t\t\t\t*取号成功,你是3号窗口%d号,请等待办理*\n\t\t\t\t\t", i);
		i++;
		break;
	}
	default:
	{
		printf("\t\t\t\t\t*            无效窗口           *\n\t\t\t\t\t\n");
		printf("\t\t\t\t\t*        ");
		break;
	}
	}
	system("pause");
	system("cls");
}

int CallNum(Queue* q)//查找/叫号功能 
{
	printf("\t\t\t\t\t*       请输入所取的号码:");
	int a;
	int b = 1;
	scanf_s("%d", &a);
	QNode* p = q->front->next;
	while (p && p->bianhao != a)
	{
		p = p->next;
		b++;
	}
	if (p == NULL || p->bianhao != a)
	{
		printf("\t\t\t\t\t*  对不起,您输入的号码不存在! *\n");
		printf("\t\t\t\t\t");
		system("pause");
		return 1;
	}
	if (b == 1)
	{
		printf("\t\t\t\t\t*\t  你现在是第1位!  \t*\n");
		int e = 0;
		DeQueue(q, e);
		printf("\t\t\t\t\t*\t    办理完成!    \t*\n");
		CustomerReview();
	}
	if (b != 1 && (p != NULL || p->bianhao == a))
	{
		printf("\t\t\t\t\t*   你现在是第%d位,请等候谢谢! *\n", b);
		printf("\t\t\t\t\t");
		system("pause");
	}
	return 1;
}

void CounterServer()//柜员
{
	printf("\t\t\t\t\t* 柜员您好,请输入您的服务窗口:*\n");
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*\t     1.1号窗口          *\n");
	printf("\t\t\t\t\t*\t     2.2号窗口          *\n");
	printf("\t\t\t\t\t*\t     3.3号窗口          *\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf_s("%d", &a);
	switch (a)
	{
	case 1:
	{
		printf("\t\t\t\t\t*\t1号窗口:");
		shows1();
		CallNum(&s1);
		break;
	}

	case 2:
	{
		printf("\t\t\t\t\t*\t2号窗口:");
		shows2();
		CallNum(&s2);
		break;
	}
	case 3:
	{
		printf("\t\t\t\t\t*\t3号窗口:");
		shows3();
		CallNum(&s3);
		break;
	}
	default:
	{
		printf("\t\t\t\t\t*\t    无效柜号   \t\t*\n\t\t\t\t\t\n");
		printf("\t\t\t\t\t*        ");
		system("pause");
		system("cls");
		break;
	}
	}
}

void CustomerReview()
{
	printf("\n\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*\t请对本次服务做出评价\t*\n");
	printf("\t\t\t\t\t*\t1.非常满意!\t\t*\n");
	printf("\t\t\t\t\t*\t2.比较满意!\t\t*\n");
	printf("\t\t\t\t\t*\t3.一般!\t\t*\n");
	printf("\t\t\t\t\t*\t4.不满意!\t\t*\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf_s("%d", &a);
	while (a < 1 || a > 4)
	{
		printf("\t\t\t\t\t*  您的输入不正确,请重新输入: ");
		scanf_s("%d", &a);
	}
	switch (a)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	{
		printf("\t\t\t\t\t*   非常感谢你的评价!谢谢!    *\n");
		printf("\t\t\t\t\t*\t");
		system("pause");
		system("cls");
		break;
	}
	default:break;
	}

}

void esc()
{
	exit(0);
}

void menu()
{
	date();
	printf("\n\n\n\n\n\n\n\n\n");
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t***********银行排队系统**********\n");
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*\t请选择服务:\t\t*\n");
	printf("\t\t\t\t\t*\t1.普通用户排队\t\t*\n");
	printf("\t\t\t\t\t*\t2.vip用户通道\t\t*\n");
	printf("\t\t\t\t\t*\t3.显示各窗口等待人数\t*\n");
	printf("\t\t\t\t\t*\t4.柜员服务界面\t\t*\n");
	printf("\t\t\t\t\t*\t0.退出系统\t\t*\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf_s("%d", &a);
	switch (a)
	{
	case 1:
	{
		system("cls");
		date();
		printf("\t\t\t\t\t*\t1.普通用户排队\t\t*\n");
		EnQueue();
		break;
	}
	case 2:
	{
		system("cls");
		date();
		printf("\t\t\t\t\t*\t2.vip用户通道\t\t*\n");
		vip2();
		break;
	}
	case 3:
	{
		system("cls");
		date();
		printf("\t\t\t\t\t*\t3.显示各窗口等待人数\t*\n");
		show();
		system("cls");
		break;
	}
	case 4:
	{
		system("cls");
		date();
		printf("\t\t\t\t\t*\t4.柜员服务界面\t\t*\n");
		CounterServer();
		system("cls");
		break;
	}
	case 0:
	{
		esc();
		break;
	}
	default:
	{
		printf("\t\t\t\t\t*\t  服务项输入有误  \t*\n");
		printf("\t\t\t\t\t*\t");
		system("pause");
		system("cls");
		break;
	}
	}
}

void date()
{
	time_t rawtime;
	struct tm timeinfo;
	char buffer[128];
	time(&rawtime);
	localtime_s(&timeinfo, &rawtime);
	strftime(buffer, sizeof(buffer), "%Y/%m/%d %H:%M:%S", &timeinfo);
	puts(buffer);
}

int main()//
{
	system("color 0b");
	static int i = 1;
	initQueue(&s1);
	initQueue(&s2);
	initQueue(&s3);
	while (1)
	{
		menu();
	}
}

DevCpp版:文章来源地址https://www.toymoban.com/news/detail-766384.html

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#include<conio.h>
static int i=1;
//void menu();
void date ();
void CustomerReview();

typedef struct QNode
{	int bianhao;//队内成员取到的号码
	struct QNode *next;
}QNode,* QueuePtr;  

typedef struct
{	QueuePtr front;//队头指针
	QueuePtr rear;//队尾指针
}Queue;//创建链式队列

void initQueue(Queue *q)//队列的初始化
{
    q->front=q->rear=(QNode *)malloc(sizeof(QNode));
    if (!q->front)//初始化失败退出
    {
        return;
    }
    q->front->next=NULL;
}

Queue s1,s2,s3;//创建三个队列窗口

int shows1()//显示1窗口人员
{
	QNode *p = (QNode *)malloc(sizeof(QNode));
	if(s1.front==s1.rear)
	{//队列为空队列
	printf("当前无排队人员 *\n");
	return 0;
	}
p=s1.front->next;
while(p)
	{
		printf("%d ",p->bianhao);
		p=p->next;
	}
printf("\n");
}

int shows2()//显示2窗口人员
{
	QNode *p = (QNode *)malloc(sizeof(QNode));
	if(s2.front==s2.rear)
	{//队列为空队列
	printf("当前无排队人员 *\n");
    return 0;
	}
p=s2.front->next;
while(p)
	{
		printf("%d\t",p->bianhao);
		p=p->next;
	}
printf("\n");
}

int shows3()//显示3窗口人员
{
	QNode *p = (QNode *)malloc(sizeof(QNode));
	if(s3.front==s3.rear){//队列为空队列
	printf("当前无排队人员 *\n");
	return 0;
}
p=s3.front->next;
while(p)
	{
		printf("%d\t",p->bianhao);
		p=p->next;
	}
printf("\n");
}

void show()//总显示窗口
{
	printf("\n\t\t\t\t\t*1号窗口排队人员:");
	shows1();
	printf("\n\t\t\t\t\t*2号窗口排队人员:");
	shows2();
	printf("\n\t\t\t\t\t*3号窗口排队人员:");
	shows3();
	printf("\t\t\t\t\t");
	system("pause");
}
 

void EnQueue(Queue &q,int &i)//队列插入
{
	QNode *p = (QNode *)malloc(sizeof(QNode));
	p->bianhao=i;
	p->next=NULL;
	q.rear->next=p;
	q.rear=p;
}

int  DeQueue(Queue &q,int &e)//队列删除
{
	if(q.front==q.rear)
	{//队列为空队列
		return 1;
	}
	QNode *p = (QNode *)malloc(sizeof(QNode));
	p=q.front->next;
	e=p->bianhao;
	q.front->next=p->next;
	if(q.rear==p)
	{
		q.rear=q.front;
	}
	free(p);
}
 
void EnQueue()//选择窗口插入
{
	show();
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*请选择窗口服务:\t\t*\n");
	printf("\t\t\t\t\t*\t     1.1号窗口          *\n");
	printf("\t\t\t\t\t*\t     2.2号窗口          *\n");
	printf("\t\t\t\t\t*\t     3.3号窗口          *\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf("%d",&a);
	switch(a)
	{
	case 1:
		{
			EnQueue(s1,i);
			printf("\t\t\t\t\t*取号成功,你是1号窗口%d号,请等待办理*\n\t\t\t\t\t",i);
			i++;
			break;
		}
	case 2:
		{
			EnQueue(s2,i);
			printf("\t\t\t\t\t*取号成功,你是2号窗口%d号,请等待办理*\n\t\t\t\t\t",i);
			i++;
			break;
		}
	case 3:
		{
			EnQueue(s3,i);
			printf("\t\t\t\t\t*取号成功,你是3号窗口%d号,请等待办理*\n\t\t\t\t\t",i);
			i++;
			break;
		}
	default:
		{		
			printf("\t\t\t\t\t*            无效窗口           *\n\t\t\t\t\t\n");
			printf("\t\t\t\t\t*        ");
			break;
		}
	}
	system("pause");
	system("cls");
}

void vip1(Queue &q,int &i)//vip头插
{
	QNode *p = (QNode *)malloc(sizeof(QNode));
	if(q.front==q.rear)
	{
		p->bianhao=i;
		p->next=NULL;
		q.rear->next=p;
		q.rear=p;
	}
	else
	{
		p->bianhao=i;
		p->next=q.front->next;
		q.front->next=p;
	}
}

void vip2()//vip插队
{
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*请选择窗口服务:\t\t*\n");
	printf("\t\t\t\t\t*\t     1.1号窗口          *\n");
	printf("\t\t\t\t\t*\t     2.2号窗口          *\n");
	printf("\t\t\t\t\t*\t     3.3号窗口          *\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf("%d",&a); 
switch(a)
{
	case 1:
		{
    		vip1(s1,i);
    		printf("\t\t\t\t\t*取号成功,你是1号窗口%d号,请等待办理*\n\t\t\t\t\t",i);
    		i++;
    		break;
		}
	case 2:
		{
    		vip1(s2,i);
    		printf("\t\t\t\t\t*取号成功,你是2号窗口%d号,请等待办理*\n\t\t\t\t\t",i);
    		i++;
    		break;
		}
	case 3:
		{
    		vip1(s3,i);
    		printf("\t\t\t\t\t*取号成功,你是3号窗口%d号,请等待办理*\n\t\t\t\t\t",i);
    		i++;
    		break;
		}
	default:
		{
			printf("\t\t\t\t\t*            无效窗口           *\n\t\t\t\t\t\n");
			printf("\t\t\t\t\t*        ");
			break;
		}
}
system("pause");
system("cls");
}

int CallNum(Queue &q)//查找/叫号功能 
{
    printf("\t\t\t\t\t*       请输入所取的号码:");
    int a;
    int b = 1;
    scanf("%d", &a);
    QNode *p = q.front->next;
    while (p && p->bianhao != a)
    {
        p = p->next;
        b++;
    }
    if (p == NULL || p->bianhao != a)
    {
        printf("\t\t\t\t\t*  对不起,您输入的号码不存在! *\n");
        printf("\t\t\t\t\t");
        system("pause");
        return 1;
    }
    if (b == 1)
    {
        printf("\t\t\t\t\t*\t  你现在是第1位!  \t*\n");
        int e = 0;
        DeQueue(q, e);
        printf("\t\t\t\t\t*\t    办理完成!    \t*\n");
        CustomerReview();
    }
    if (b != 1&&(p != NULL || p->bianhao == a))
    {
        printf("\t\t\t\t\t*   你现在是第%d位,请等候谢谢! *\n", b);
        printf("\t\t\t\t\t");
        system("pause");
    }
    return 1;
}

void CounterServer()//查询排队进度
{
	printf("\t\t\t\t\t* 柜员您好,请输入您的服务窗口:*\n");
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*\t     1.1号窗口          *\n");
	printf("\t\t\t\t\t*\t     2.2号窗口          *\n");
	printf("\t\t\t\t\t*\t     3.3号窗口          *\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf("%d",&a);
	switch(a)
	{
		case 1:
			{
				printf("\t\t\t\t\t*\t1号窗口:");
				shows1();
				CallNum(s1);
				break;
			}

		case 2:
			{
				printf("\t\t\t\t\t*\t2号窗口:");
				shows2();
				CallNum(s2);
				break;
			}
		case 3:
			{
				printf("\t\t\t\t\t*\t3号窗口:");
				shows3();
				CallNum(s3);
				break;
			}
		default:
			{	
				printf("\t\t\t\t\t*\t    无效窗口   \t\t*\n\t\t\t\t\t\n");
				printf("\t\t\t\t\t*        ");
				system("pause");
        		system("cls");
				break;
			}
	}
}

void CustomerReview()
{
	printf("\n\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*\t请对本次服务做出评价\t*\n");
	printf("\t\t\t\t\t*\t1.非常满意!\t\t*\n");
	printf("\t\t\t\t\t*\t2.比较满意!\t\t*\n");
	printf("\t\t\t\t\t*\t3.一般!\t\t*\n");
	printf("\t\t\t\t\t*\t4.不满意!\t\t*\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf("%d",&a);
	while (a < 1 || a > 4) 
	{
        printf("\t\t\t\t\t*  您的输入不正确,请重新输入: ");
        scanf("%d", &a);
    }
	switch(a)
	{
		case 1:
		case 2:
		case 3:
		case 4: 
			{
				printf("\t\t\t\t\t*   非常感谢你的评价!谢谢!    *\n");
				printf("\t\t\t\t\t*\t");
				system("pause");
				system("cls");
				break;
			}
		default:break;
	}

}

void exit()
{
	exit(0);
}

void menu()
{
	date ();
	printf("\n\n\n\n\n\n\n\n\n");
    printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t***********银行排队系统**********\n");
	printf("\t\t\t\t\t*********************************\n");
	printf("\t\t\t\t\t*\t请选择服务:\t\t*\n");
	printf("\t\t\t\t\t*\t1.普通用户排队\t\t*\n");
	printf("\t\t\t\t\t*\t2.vip用户通道\t\t*\n");
	printf("\t\t\t\t\t*\t3.显示各窗口等待人数\t*\n");
	printf("\t\t\t\t\t*\t4.柜员服务界面\t\t*\n");
	printf("\t\t\t\t\t*\t0.退出系统\t\t*\n");
	printf("\t\t\t\t\t*********************************\n");
	int a;
	printf("\t\t\t\t\t");
	scanf("%d",&a);
	switch(a)
	{
		case 1:
			{
        		system("cls");
        		date ();
        		printf("\t\t\t\t\t*\t1.普通用户排队\t\t*\n");
				EnQueue();
				break;
			}
		case 2:
			{
				system("cls");
				date ();
				printf("\t\t\t\t\t*\t2.vip用户通道\t\t*\n");
				vip2();
				break;
			}
		case 3:
			{
				system("cls");
				date ();
				printf("\t\t\t\t\t*\t3.显示各窗口等待人数\t*\n");
				show();
				system("cls");
				break;
			}

		case 4:
			{
				system("cls");
				date ();
				printf("\t\t\t\t\t*\t4.柜员服务界面\t\t*\n");
				CounterServer();
    			system("cls");
				break;
			}
		case 0:
			{
				exit();
				break;
			}
		default:
			{
				printf("\t\t\t\t\t*\t  服务项输入有误  \t*\n");
				printf("\t\t\t\t\t*\t");
				system("pause");
    			system("cls");
				break;
			}
	}
}

void date()
{
  time_t rawtime;
  struct tm * timeinfo;
  char buffer [128];
  time (&rawtime);
  timeinfo = localtime (&rawtime);
  strftime (buffer,sizeof(buffer),"%Y/%m/%d %H:%M:%S",timeinfo);
  puts (buffer);
}

int main()//
{ 
	system("color 0b") ;
	static int i=1;
	initQueue(&s1);
	initQueue(&s2);
	initQueue(&s3);
	while(1)
	{
       menu();
	}
}

到了这里,关于【NJUPT】 数据结构与算法分析_银行排队系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HNU数据结构与算法分析-作业1-算法分析

      1. (简答题) 1.(教材3.4)(a)假设某一个算法的时间代价为 ,对于输入规模n,在某台计算机上实现并完成该算法的时间为t秒。现在另有一台计算机,运行速度为第一台的64倍,那么t秒内新机器上能完成的输入规模为多大? 2.(教材3.12) 写出下列程序段平均情况下时间代

    2024年02月05日
    浏览(45)
  • 【算法与数据结构】--算法基础--算法设计与分析

    一、贪心算法 贪心算法是一种解决优化问题的算法设计方法,其核心思想是在每一步选择当前状态下的最优解,从而希望最终达到全局最优解。下面将介绍贪心算法的原理、实现步骤,并提供C#和Java的实现示例。 1.1 原理: 贪心算法的原理基于局部最优选择,通过在每一步选

    2024年02月07日
    浏览(52)
  • HNU数据结构与算法分析-作业2-线性结构

      1. (简答题) 4.1 假设一个线性表包含下列元素: |2,23,15,5,9 使用Shaffer编写的教材《数据结构与算法分析》的List ADT编写一些C++语句,删除值为15的元素。 (要求:采用C或C++语言描述算法) 4.6 使用Shaffer编写的教材《数据结构与算法分析》的LList类,给LList类的实现添加一个成

    2024年02月05日
    浏览(54)
  • 数据结构基本概念及算法分析

    数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科 1.1.1 数据 数据: 描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合. 数据不仅包括整型,实型等数据类型,还包括字符及

    2024年02月15日
    浏览(43)
  • 【数据结构】——常见排序算法(演示图+代码+算法分析)

    目录 1.  常见排序算法 1.2 稳定性 2.  常见排序算法的实现 2.1 插入排序 2.1.1基本思想 2.1.2代码 2.1.4算法分析  2.2 希尔排序 2.2.1基本思想 2.2.2代码 2.2.3演示图  2.2.4算法分析 2.3 选择排序 2.3.1基本思想 2.3.2代码 2.3.3演示图 2.3.4算法分析 2.4 堆排序 2.4.1基本思想  2.4.2代码 2.4.3演示

    2024年02月11日
    浏览(73)
  • 算法与数据结构-复杂度分析

      算法的执行效率,粗略地讲,就是算法代码执行的时间。但是,如何在不运行代码的情况下,用“肉眼”得到一段代码的执行时间呢?   这里有段非常简单的代码,求 1,2,3…n 的累加和。现在,我就带你一块来估算一下这段代码的执行时间。   从 CPU 的角度来看,这

    2024年02月08日
    浏览(54)
  • 《数据结构与算法分析》课程设计——迷宫问题

    中国矿业大学信控学院   补一下我之前在博客园发布的内容  懒得调了, 想复制完整代码直接复制最下面的 ,想复制分布代码去看我博客园链接吧 《数据结构与算法分析》课程设计——迷宫问题 - 刷子zz - 博客园 一、  问题描述 问题中迷宫可用方阵[m,n]表示,0表示能通过

    2024年02月10日
    浏览(52)
  • 【数据结构】排序算法的稳定性分析

    💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃 个人主页 :阿然成长日记 👈点击可跳转 📆 个人专栏: 🔹数据结构与算法🔹C语言进阶 🚩 不能则学,不知则问,耻于问人,决无长进 🍭 🍯 🍎 🍏 🍊 🍋 🍒 🍇 🍉 🍓 🍑 🍈 🍌 🍐 🍍 前言: 前面我们已经

    2024年02月08日
    浏览(60)
  • 数据结构与算法分析 第六章 图 作业讲解

     参考教材: 《数据结构(C语言版 第2版)》 严蔚敏,李冬梅,吴伟民编著,人民邮电出版社,2022年版。 截图未标明出处均为原创或取自《数据结构(C语言版 第2版)》~   本文对应的作业题讲解视频:   数据结构与算法分析作业讲解视频合集 https://www.bilibili.com/video/BV1N

    2024年02月03日
    浏览(47)
  • 数据结构实验任务八:排序算法的实现与分析

    问题描述 统计成绩:给出 n 个学生的考试成绩表,每条信息由姓名和分数组成,试设 计一个算法: 1.按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同 一名次; 2.按名次列出每个学生的姓名与分数。 输入要求 输入 n+1 行,前 n 行是 n 个学生的信息(姓

    2024年02月04日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包