急!!!!!数据结构课程设计
#include #include #include #define MAX_VERTEX_NUM 30 //最大顶点数#define INFINITY 10000000 //无穷大typedef struct ArcCell{int adj;}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct{char vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;//查询顶点位置int LocateVex(MGraph G,char v){int i=0;while(G.vexs[i]!=v&&i
数据结构试验怎么做?
用TURBO C 2.0 或者 WIN-TC 或者visual c++都行。看看这个也许你会明白的更多一些。实验一 多项式相加熟悉链表的使用。掌握如何使用C语言实现链表的说明、创建以及结点的插入和删除等操作。熟悉C语言编程。对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”的一项;对于两个一元多项式中所有指数不相同的项,则分别复抄到“和多项式”中去。1. 用链表作一元多项式的数据结构,用C语言对链表作说明2. 生成输入一元多项式的函数3. 输入一元多项式A(x)和B(x)4. 以一元多项式A(x)为和多项式,将B(x)多项式中系数加入到A(x)中去实验二 后缀表达式计算掌握如何使用C语言实现栈的说明、创建以及进栈和出栈等操作。熟悉C语言编程。先将中缀表达式(就是我们通常所见的)转换为后缀表达式,比如 a+b*c+d 要变成 abc*+d+;转换的方法用栈来实现,涉及到运算符的优先级;然后用另一个栈来对后缀表达式计算结果1.读入字母/数字--〉字母/数字进栈2.读入运算符--〉退出两个字母/数字,用运算符计算结果,并将结果进栈3.栈能刚好退完,则最后的即为结果。否则表明表达式有误实验三 Kmp算法熟悉字符串的使用。掌握如何kmp算法实验字符串的模式匹配。熟悉C语言编程。求出子串(模式串)的next,利用kmp算法实验模式与主串的匹配算法。1.生成模式串的next函数2.从第1个字符开始,进行模式串与主串的比较,3.如果出现失配,将模式串的第next[j]位置开始,继续与主串进行比较。实验四 Huffman 编码熟悉Huffman编码方法。了解并弄懂Huffman编码实现信息的无损压缩原理。熟悉C语言编程。1.根据给定的n个权值(w1, w2, …, wn)构成n棵二叉树的集合F=,其中每棵二叉树Ti中只有一个带树为Ti的根结点2.在F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置其根结点的权值为其左右子树权值之和3.在F中删除这两棵树,同时将新得到的二叉树加入F中4.重复2, 3,直到F只含一棵树为止1.用C语言实现二叉树的说明2.输入n个权值,并生成n个二叉树3.对n个二叉树逐步生成Huffman树4.对Huffman树的每个叶子结点生成编码实验五 关键路径熟悉关键路径的实现方法。了解AOE-网以及关键路径在工程实践中的应用。熟悉C语言编程。根据输入的弧,生成AOE-网。从始点开始,找出到终点的多条路径,求这些路径上的关键活动。由关键活动组成的从始点到终点的路径,即为关键路径。1.输入e条弧,生成AOE-网的存储结构。2.从始点v0出发,令ve[0]=0,按拓扑有序求ve[j]3.从终点vn-1出发,令vl[n-1]=ve[n-1],按逆拓扑有序求vl[i]4.根据各顶点的ve和vl值,求每条弧(活动)ai的最早开始时间e[ai]和最迟开始时间l[ai]5.如果e[ai]=l[ai],则ai为关键活动实验六 最短路经熟悉最短路径的实现方法。了解AOE-网以及最短路径在求解实际问题中的应用。熟悉C语言编程。从始点v0开始,逐步求v0到其它可达的各顶点的最短路径,直到所有顶点计算完成为止。1.输入e条弧,生成AOE-网的存储结构。2.初始化: S ← ;dist[j] ← Edge[0][j],j = 1, 2, …, n-1;// n为图中顶点个数3.求出最短路径的长度:dist[k] ← min , i ? V- S ;S ← S U ;4.修改从v0到V-S集合中各顶点的最短路径:dist[i] ← min,对于每一个 i 属于 V- S ;5.判断:若 S = V, 则算法结束,否则转 2。实验七 二叉排序树熟悉二叉排序树的使用。掌握如何使用C语言实现二叉树的说明、创建以及二叉排序树的生成等操作。熟悉C语言编程。给定一个记录关键字的值,与二叉排序树的根结点值比较,如果小于根结点的值,则向左子树查找;如果大于根结点的值,则向右子树查找。如果查找到叶子结点leaf,仍没有找到记录,则:如果关键字的值小于leaf的值,则插入该leaf结点的左边,做leaf的左孩子,否则做leaf的右孩子。1.用C语言实现二叉树的说明2.直接将输入的值作为根结点的值3.与根结点比较,小于则放到左子树上,大于则放到右子树上。实验八 希尔排序熟悉希尔排序的使用。掌握如何使用C语言实现若干记录的排序。熟悉C语言编程。先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。1.输入待排序记录2.首先取一个整数 gap < n(待排序记录数) 作为间隔, 将全部记录分为 gap 个子序列, 所有距离为 gap 的记录放在同一个子序列中3.在每一个子序列中分别施行直接插入排序。4.然后缩小间隔 gap, 例如取 gap = gap/25.重复上述的子序列划分和排序工作,直到最后取gap = 1, 将所有记录放在同一个序列中排序为止。实验九 快速排序熟悉快速排序的使用。掌握如何使用C语言实现若干记录的排序。熟悉C语言编程。通过一趟将待排记录分割成独立的两个部分,其中一部分记录的关键字均比另一部分记录的关键字小。再对两个部分分别进行快速排序。1.输入待排序的记录,并选择第一个记录作为pivotkey记录2.从high指向的记录开始,向前找到第一个关键字的值小于Pivotkey的记录,将其放到low指向的位置,low+13.从low指向的记录开始,向后找到第一个关键字的值大于Pivotkey的记录,将其放到high指向的位置,high-14.重复2,3,直到low=high,将枢轴记录放在low(high)指向的位置5.重复2,3,4,直到整个记录有序为止熟悉堆排序的使用。掌握如何使用C语言实现若干记录的排序。熟悉C语言编程。首先将一个无序序列建成一个堆;然后输出堆顶元素;在输出堆顶元素之后,调整剩余的元素成为一个新堆。1.输入记录,按顺序创建一个完全二叉树2.根据筛选算法,从最后一个结点开始,一直到根结点,逐步筛选,建造初始堆。3.输出堆顶记录,将最后一个结点放到堆顶,并做筛选,重新建造一个堆4.直到所有记录输出为止
怎么自己学好C语言编程,高手进~~!
#include #include void main(){ int n,i,j; scanf("%d", &n); int *p = (int*)malloc(n*sizeof(int)); if(p != null){ for(i=0;i<=n; i++){for(j=1;j<=n;j++){if(i==0){p[j] = 1;} else {if(j%i==0)p[j] = p[j]^1;}printf("%d ", p[j]);}printf("\n"); } }}不会画图,1是亮,0是黑