精华内容
下载资源
问答
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 二、真题解析 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列...

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    一、考研真题

    二、真题解析

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    展开全文
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 1、下面是求两个集合A和B的并集(AUB)的算法,集合A和集合B分别用单链表La和Lb的带头结点的单链表表示(链表中的数据按...

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    一、考研真题

    1、下面是求两个集合A和B的并集(AUB)的算法,集合A和集合B分别用单链表La和Lb的带头结点的单链表表示(链表中的数据按升序排序),其并集用单链表Lc表示(带头结点,其数据也按升序排列),请填空完善算法。(每空2分)。

    2、对给定的带头结点的单链表L,结点值得类型为整型,编写一个删除L中值为x的算法(L中可能有多个值为x的结点,且值得分布具有随机性)。(6分)

    3、假设将循环队列定义为:

    typedef struct
    {
    	QElemType *base;
    	int rear;//指向循环队列中队尾元素的位置
    	int length;//表示队列中所含数据元素的个数
    }SqQueue;
    SqQueue Q;

    试给出次循环队列的队满条件,并写出相应的入队列和出队列算法(在出队列的算法中要返回队头元素)。(8分)

    4、编写一个递归算法,计算以二叉树表示的二叉树T的高度h。(6分)

    二、真题解析

    2、对给定的带头结点的单链表L,结点值得类型为整型,编写一个删除L中值为x的算法(L中可能有多个值为x的结点,且值得分布具有随机性)。(6分)

    typedef struct LNode
    {
    	int data;
    	struct LNode* next;
    
    }LNode,*LinkList;
    
    void DeleteLNode(LNode* &L,int x)
    {
    	if (L==NULL)
    	{
    		return;
    	}
    
    	LNode *p,*q;
    	p=L;
    	while(p->next!=NULL)
    	{
    		if (p->next->data==x)
    		{
    			q=p->next;
    			p->next=q->next;
    			free(q);			
    
    		}else{
    			p=p->next;
    		}
    	}
    	
    }

    3、试给出次循环队列的队满条件,并写出相应的入队列和出队列算法(在出队列的算法中要返回队头元素)。(8分)

    //入队
    int EnCQueue(SqQueue &Q, QElemType x)
    {
    	if(Q.length == MAXQSIZE){
    		return -1;//循环队列满
    	}
    	Q.base[Q.rear] = x;
    	Q.rear=(Q.rear+1)%MAXQSIZE;
    	++Q.length;//当前元素个数+1
    	return 0;
    }
    //出队
    int DeCQueue(SqQueue &Q, QElemType &x)
    {    
    	if(Q.length==0){
    		return -1;//循环队列空
    	}
    	int font=(Q.rear+MAXQSIZE-Q.length)%MAXQSIZE;
    	x = Q.base[font];
    	--Q.length;//当前元素个数-1
    	return 0;
    }    

    4、编写一个递归算法,计算以二叉树表示的二叉树T的高度h。(6分)

    int Heigh(BTNode* btree)
    {
    	if (btree == NULL)
    	{
    		return 0;
    	}
    	int lheight, rheight;
    	lheight = Heigh(btree->lchild);
    	rheight = Heigh(btree->rchild);
    	if (lheight>rheight)
    	{
    		return lheight + 1;
    	}
    	else {
    		return rheight + 1;
    	}
    }

    类似考法:2013年四题第一问2012年第四题2008年第四题​​​​​​​

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    展开全文
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 3、设有若干正整数的随机输入序列,写出一个算法,建立带头结点的值升序排列的链表(输入-1时停止输入),该链表结构如图...

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    一、考研真题

    3、设有若干正整数的随机输入序列,写出一个算法,建立带头结点的值升序排列的链表(输入-1时停止输入),该链表结构如图所示。

    4、有一个用二叉链表表示的二叉树btree,结点结构为(lchild,data,rchild),设计分别实现如下操作的递归算法:

    (1)计算二叉树的深度;

    (2)计算二叉树中度为0的结点数目。

    二、真题解析

    3、设有若干正整数的随机输入序列,写出一个算法,建立带头结点的值升序排列的链表(输入-1时停止输入),该链表结构如图所示。

    //2013年第一题
    LNode* CreateLink()
    {
    	LNode* L;
    	//创建头结点
    	L = (LNode*)malloc(sizeof(LNode));
    	L->next = NULL;
    
    	LNode* prior;
    	int m_ch;
    	cin >> m_ch;
    	while (m_ch != -1)
    	{
    		LNode* pcur = (LNode*)malloc(sizeof(LNode));
    		pcur->data = m_ch;
    		//从表头查找第一个比当前结点大的结点
    		prior = L;
    		while (prior->next != NULL&&prior->next->data<pcur->data)
    		{
    			prior = prior->next;
    		}
    		//插入创建的结点
    		pcur->next = prior->next;
    		prior->next = pcur;
    		//输入下一个元素值
    		cin >> m_ch;
    
    	}
    	return L;
    }

    4、有一个用二叉链表表示的二叉树btree,结点结构为(lchild,data,rchild),设计分别实现如下操作的递归算法:

    (1)计算二叉树的深度;

    int Heigh(BTNode* btree)
    {
    	if (btree == NULL)
    	{
    		return 0;
    	}
    	int lheight, rheight;
    	lheight = Heigh(btree->lchild);
    	rheight = Heigh(btree->rchild);
    	if (lheight>rheight)
    	{
    		return lheight + 1;
    	}
    	else {
    		return rheight + 1;
    	}
    }

    类似考法:2013年四题第一问2012年第四题2008年第四题​​​​​​​

    (2)计算二叉树中度为0的结点数目。

    int LeafNum(BTNode* bt)
    {
    	if (bt==NULL)
    	{
    		return 0;
    	}
    	if (bt->lchild==NULL&&bt->rchild==NULL)
    	{
    		return 1;
    	}
    	int num = LeafNum(bt->lchild) + LeafNum(bt->rchild);
    	return num;
    }

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    展开全文
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 3、设计一算法,实现在数据元素有序的顺序存储结构的线性表中插入一个值为x的操作。如果无存储空间则插入失败,函数的...

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    一、考研真题

    3、设计一算法,实现在数据元素有序的顺序存储结构的线性表中插入一个值为x的操作。如果无存储空间则插入失败,函数的返回值为插入成功与否的标志。(8分)

    4、设有两个整数集合A和B,分别用递增有序链表表示,设计一算法实现两个集合的联合运算,运算结果也有递增有序链表表示。运算后,A、B两个链表保持不变。(8分)

    二、真题解析

    3、设计一算法,实现在数据元素有序的顺序存储结构的线性表中插入一个值为x的操作。如果无存储空间则插入失败,函数的返回值为插入成功与否的标志。(8分)

    #define QElemType int
    #define MaxQSize 100 //队列最大元素个数
    typedef struct
    {
    	QElemType *base;
    	int rear;//指向循环队列中队尾元素的位置
    	int length;//表示队列中所含数据元素的个数
    
    }SqList;
    SqList Q;
    int Insert(SqList &L, int x)
    {
    	//队列以满,插入失败
    	if (L.length >= MaxQSize)
    		return -1;
    	if (L.length<2)return -1;
    
    	int flag;//队列增序1,减序-1
    	if (L.base[L.length - 1] - L.base[0] >= 0)
    	{
    		flag = 1;
    	}
    	else
    	{
    		flag = -1;
    	}
    	int m_index;
    	for (int i = L.length - 1; i >= 0; i--)
    	{
    		if (flag*(L.base[i] - x)<0)
    		{
    			m_index = i;
    			break;
    		}
    		else {
    			L.base[i + 1] = L.base[i];
    		}
    	}
    	L.base[m_index + 1] = x;
    	L.length++;
    	return 0;
    }
    

    4、设有两个整数集合A和B,分别用递增有序链表表示,设计一算法实现两个集合的联合运算,运算结果也有递增有序链表表示。运算后,A、B两个链表保持不变。(8分)

    LNode* Union(LNode* La,LNode* Lb)
    {
    	if (La==NULL&&Lb==NULL)	
    		return NULL;
    	if(La==NULL&&Lb!=NULL)
    		return Lb;
    	if(La!=NULL&&Lb==NULL)
    		return La;
    
    	LNode *pCHead = NULL; //A与B交集头
    	LNode *pCEnd = NULL;  //A与B交集尾
    	//创建头结点
    	pCHead = new LNode();	
    	pCHead->next = NULL;
    	pCEnd = pCHead;
    
    	LNode *pA = La->next; //指向有序列表A第一个结点
    	LNode *pB = Lb->next; //指向有序列表B第一个结点
    	while (pA != NULL && pB != NULL)
    	{
    		int data;
    		if (pA->data == pB->data)
    		{
    			data = pA->data;
    			//相等,同时后移
    			pA = pA->next;
    			pB = pB->next;
    		}
    		else if (pA->data > pB->data)
    		{
    			data= pB->data;
    			//最小的相比,B小 B后移
    			pB = pB->next;
    		}
    		else
    		{
    			data = pA->data;
    			//最小的相比,A小 A后移
    			pA = pA->next;
    		}
    
    		LNode *pNode = new LNode();
    		pNode->data = data;
    		//插入新建结点
    		pNode->next = pCEnd->next;
    		pCEnd->next = pNode;
    		pCEnd=pNode;
    	}
    
    	if (pB!=NULL)
    	{
    		pA=pB;
    	}
    
    	while (pA!=NULL)
    	{
    		LNode *pNode = new LNode();
    		pNode->data = pA->data;
    		//插入新建结点
    		pNode->next = pCEnd->next;
    		pCEnd->next = pNode;
    		pCEnd=pNode;
    
    		pA=pA->next;
    	}
    	return pCHead;
    }

    更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列

    展开全文
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 3、写一个算法,将单链表中值重读的结点删除,使所得的结果表中个结点值均为不相同(假设单链表中包含一个头结点)。(6分...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研题目 五、算法设计题 1、单向循环链表结点结构如本试卷第三大题第二小题所示,单向循环链表无附加头结点,已知某结点地址P,试...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 3、有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中多余元素的值相同的结点。 4、设一棵...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 3、从键盘输入任意一个大于等于2的自然数m,将m写成所有素因子乘积的形式,例如,  若输入:13,则你的输出应该: 13=13 ...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研真题 1.已知穿线二叉树结点数据类型定义如本卷第二大题第8小题所示,若二叉树已经线索华,试编写算法函数,形参传入根结点root,...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 考研真题 3.编写一个函数将一个头结点指针为La的单链表A分解为两个单链表A和B,其头结点分别为La和Lb,其中A链表中含有A中序号为奇数的...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 考研真题 3、假设有如下的关于职工信息的结构体: typedef struct Employee{ long eID; char eName[10]; struct Employee *pNext; ...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 本文编译环境:VS2015。 一、考研题目 四、算法设计与程序设计(30分,共3小题) 1、已知某双向链表结点的存储结构如图4所示,请按...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 3、已知单向链表节点结构为: 编写一个函数:struct MyNode* ChangeHead(struct MyNode *pHead),其中形参pHead为链表的头指针,该函数将...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 一、考研题目 1.设某堆栈的存储结构定义如下,请按要求完成如下问题。(10分) Typedef struct{  int *base;//栈底指针  int *top;...
  • 更多西南交通大学真题,参考:西南交通大学计算机考研——数据结构真题系列 1.已知某树采用双亲表示法的存储结构进行存储(设树结点的值为整数),请按要求完成如下任务:(14分) (1)写出该树用双亲表示法时的...
  • 西南交通大学计算机考研——数据结构真题系列

    千次阅读 多人点赞 2018-10-24 22:28:53
    所有代码都是在VS2015上成功编译,保证程序的正确性,如果有什么不对的地方,欢迎留言指正。...西南交通大学计算机专业考研真题答案详解1:2017年数据结构算法与程序设计 西南交通大学计算机专业考研真题...
  • 一、三轮复习 1. 第一轮复习 (8-9月): 数学: 复习内容: 高数十八讲,线性代数九讲。 复习建议: 有基础可以先做一套...重点算法(链表头插尾插、树的遍历)要能看懂。 政治: 复习内容:政治考点背诵册。 复习
  • 附可运行程序和课程报告,理解 DDA 直线生成算法、Bresenham 画线算法、中点画线算法 中点画圆算法、多边形填充算法(有序边表)、种子填充算法
  • 1. 算法设计题 :已知n元顺序表a0, a1, … , an-1按关键字递增有序存储。给定关键字值key,编写算法用对分查找求下标i,满足ai-1且aikey。 2. 编程题:输入n个两两互不相等的整数,以这些整数为关键字建立平衡的...
  • 2013年起,信息学院研究生复试上机考试使用新版本科生写的上机系统,一共四道大题,每题25分,考试时间限定为60分钟,以计算机二级的算法为基础(前三题),融入部分ACM练习题(最后一题),并且需要自行写出完整的...
  • 用于西南交通大学2020秋季学期的数据结构A课程的期末考试复习: ​写这个笔记的初衷是因为老师发的ppt中并没有对于各个例题的过多解答,而且考察的很多知识点其实不需要对算法和数据结构本身有很深入的了解就可以...
  • 用于西南交通大学2020秋季学期的数据结构A课程的期末考试复习: ​写这个笔记的初衷是因为老师发的ppt中并没有对于各个例题的过多解答,而且考察的很多知识点其实不需要对算法和数据结构本身有很深入的了解就可以...
  • 1、(1)一个学生毕业十五后,他的信息仍保留在学校数据库。这种情况提出了怎样的担忧?...4、给出5个点的坐标和计算距离的欧式距离公式,一步步描述k-means算法。 5、在分类的两个步骤中,class label起
  • 写这个笔记的初衷是因为老师发的ppt中并没有对于各个例题的过多解答,而且考察的很多知识点其实不需要对算法和数据结构本身有很深入的了解就可以解决,因此就考虑写这么一篇笔记,主要希望能够帮助大家快速并全面的...
  • 完全原创哈,有更好算法的朋友请告诉我下哈,谢谢。#include "iostream.h"#include "malloc.h"typedef struct Stack //定义堆栈{ int *base; int *top; int stacksize;}Stack; int InitStack(Stack &s) //初始...
  • 西南交通大学的CBTC仿真与性能分析系统为平台,详细研究了列车运行的能耗算法,针对不同的线路和不同类型的列车,通过仿真均能得到列车行驶过程中的速度状态和列车牵引能耗以及再生制动能的关系。该研究为今后利用...
  • SPFA算法

    2018-04-22 13:32:40
    SPFA算法SPFA算法西南交通大学段凡丁于1994年发表的。求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm。从名字我们就可以看出,这种算法在效率上一定有过人之处。很多时候,给定的图存在负权边,...
  •  SPFA算法西南交通大学段凡丁于1994年发表的。  从名字我们就可以看出,这种算法在效率上一定有过人之处。   很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的...
  • s BP算法的Matlab工具箱在短期 负荷预测中的应用 院系西南交通大学网络教育学院 专 业电气工程及其自动化 姓名 指导教师 贺建闽 南交通大学 院系网络教育学院 院系 西南交通大学网络教育学院 专 业 电气工程及其自动...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 147
精华内容 58
关键字:

西南交通大学算法