当前位置:首页 » 课程大全 » 数据结构课程设计案例精编

数据结构课程设计案例精编

发布时间: 2021-03-05 10:02:09

❶ 求 数据结构课程设计

用C++写一个类, list, stack, tree或者其他都可以,网上很多数据结构的代码了,随版便照抄都行。http://code.ddvip.com/

如果嫌规模小了,就多写几个这样的权类,把它做成一个库,考试过关没什么问题了。

如果你自己写出了这些,你的水平就提高很多了。
我以前就这么做,代码写的比较完善,分数还可以,90多。

❷ 数据结构课程设计题目,图的建立以及遍历。

//图的遍历算法程序

//图的遍历是指按某条搜索路径访问图中每个结点,使得每个结点均被访问一次,而且仅被访问一次。图的遍历有深度遍历算法和广度遍历算法,程序如下:
#include <iostream>
//#include <malloc.h>
#define INFINITY 32767
#define MAX_VEX 20 //最大顶点个数
#define QUEUE_SIZE (MAX_VEX+1) //队列长度
using namespace std;
bool *visited; //访问标志数组
//图的邻接矩阵存储结构
typedef struct{
char *vexs; //顶点向量
int arcs[MAX_VEX][MAX_VEX]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和弧数
}Graph;
//队列类
class Queue{
public:
void InitQueue(){
base=(int *)malloc(QUEUE_SIZE*sizeof(int));
front=rear=0;
}
void EnQueue(int e){
base[rear]=e;
rear=(rear+1)%QUEUE_SIZE;
}
void DeQueue(int &e){
e=base[front];
front=(front+1)%QUEUE_SIZE;
}
public:
int *base;
int front;
int rear;
};
//图G中查找元素c的位置
int Locate(Graph G,char c){
for(int i=0;i<G.vexnum;i++)
if(G.vexs[i]==c) return i;
return -1;
}
//创建无向网
void CreateUDN(Graph &G){
int i,j,w,s1,s2;
char a,b,temp;
printf("输入顶点数和弧数:");
scanf("%d%d",&G.vexnum,&G.arcnum);
temp=getchar(); //接收回车
G.vexs=(char *)malloc(G.vexnum*sizeof(char)); //分配顶点数目
printf("输入%d个顶点.\n",G.vexnum);
for(i=0;i<G.vexnum;i++){ //初始化顶点
printf("输入顶点%d:",i);
scanf("%c",&G.vexs[i]);
temp=getchar(); //接收回车
}
for(i=0;i<G.vexnum;i++) //初始化邻接矩阵
for(j=0;j<G.vexnum;j++)
G.arcs[i][j]=INFINITY;
printf("输入%d条弧.\n",G.arcnum);
for(i=0;i<G.arcnum;i++){ //初始化弧
printf("输入弧%d:",i);
scanf("%c %c %d",&a,&b,&w); //输入一条边依附的顶点和权值
temp=getchar(); //接收回车
s1=Locate(G,a);
s2=Locate(G,b);
G.arcs[s1][s2]=G.arcs[s2][s1]=w;
}
}
//图G中顶点k的第一个邻接顶点
int FirstVex(Graph G,int k){
if(k>=0 && k<G.vexnum){ //k合理
for(int i=0;i<G.vexnum;i++)
if(G.arcs[k][i]!=INFINITY) return i;
}
return -1;
}
//图G中顶点i的第j个邻接顶点的下一个邻接顶点
int NextVex(Graph G,int i,int j){
if(i>=0 && i<G.vexnum && j>=0 && j<G.vexnum){ //i,j合理
for(int k=j+1;k<G.vexnum;k++)
if(G.arcs[i][k]!=INFINITY) return k;
}
return -1;
}
//深度优先遍历
void DFS(Graph G,int k){
int i;
if(k==-1){ //第一次执行DFS时,k为-1
for(i=0;i<G.vexnum;i++)
if(!visited[i]) DFS(G,i); //对尚未访问的顶点调用DFS
}
else{
visited[k]=true;
printf("%c ",G.vexs[k]); //访问第k个顶点
for(i=FirstVex(G,k);i>=0;i=NextVex(G,k,i))
if(!visited[i]) DFS(G,i); //对k的尚未访问的邻接顶点i递归调用DFS
}
}
//广度优先遍历
void BFS(Graph G){
int k;
Queue Q; //辅助队列Q
Q.InitQueue();
for(int i=0;i<G.vexnum;i++)
if(!visited[i]){ //i尚未访问
visited[i]=true;
printf("%c ",G.vexs[i]);
Q.EnQueue(i); //i入列
while(Q.front!=Q.rear){
Q.DeQueue(k); //队头元素出列并置为k
for(int w=FirstVex(G,k);w>=0;w=NextVex(G,k,w))
if(!visited[w]){ //w为k的尚未访问的邻接顶点
visited[w]=true;
printf("%c ",G.vexs[w]);
Q.EnQueue(w);
}
}
}
}

//主函数
void main(){
int i;
Graph G;
CreateUDN(G);
visited=(bool *)malloc(G.vexnum*sizeof(bool));
printf("\n广度优先遍历: ");
for(i=0;i<G.vexnum;i++)
visited[i]=false;
DFS(G,-1);
printf("\n深度优先遍历: ");
for(i=0;i<G.vexnum;i++)
visited[i]=false;
BFS(G);
printf("\n程序结束.\n");
}
输出结果为(红色为键盘输入的数据,权值都置为1):
输入顶点数和弧数:8 9
输入8个顶点.
输入顶点0:a
输入顶点1:b
输入顶点2:c
输入顶点3:d
输入顶点4:e
输入顶点5:f
输入顶点6:g
输入顶点7:h
输入9条弧.
输入弧0:a b 1
输入弧1:b d 1
输入弧2:b e 1
输入弧3:d h 1
输入弧4:e h 1
输入弧5:a c 1
输入弧6:c f 1
输入弧7:c g 1
输入弧8:f g 1
广度优先遍历: a b d h e c f g
深度优先遍历: a b c d e f g h
程序结束.

❸ c语言课程设计案例精编

如果有来一定的基础的话源,一楼的说的不错先学学“数据结构”的相关知识!算法在程序设计中有很“重要”的作用……其实学c主要是学编程的思想!你要是就一个个的死学案例,也只是会设计类似的东西!不会有创新,甚至有的地方会根本搞不明白。不知道你基础怎么样?如果不是很好,就复习《数据结构吧》清华出版社 那本严蔚敏的数据结构(C语言版)。比较容易理解,最好还是要看些英文的原版数据结构的书。
当然如果你数据结构学得很好的话,比如你就是想通过一些案例的开发,来增强自己的实战能力,你可以深入学习你说的那本书,其实你只要仔细看一下就会发现,其实案例设计的教程中文版的根本没什么创新都停留在以下几个“经典问题”上,不同的版本也没什么太多的区别就是重印一下而已!这本书作为对编程基本功的训练不错!
案例一:贪吃蛇游戏
案例二:计算器
案例三:黑白棋游戏
案例四:迷宫问题
案例五:扫地雷游戏
案例六:速算24
案例七:数据结构CAI系统
案例八:进度调度
案例九:存储管理分区分配算法
案例十:通讯录
案例十一:学生成绩管理
案例十二:工资管理
案例十三:图书借阅管理
案例十四:教师工作量计算
相关下载地址:

❹ 数据结构课程设计

这个是程序:
#include "string.h"
#define NULL 0
unsigned int key;
unsigned int key2;
int *p;
struct node
{
char name[20],address[20];
char num[11];
struct node *next;
}
**phone;
**nam;
**address;
typedef struct node *pnode;
typedef struct node *mingzi;

void hash(char num[11])
{
int i = 3;
key=(int)num[2];
while(num[i]!=NULL)
{
key+=(int)num[i];
i++;
key=key%17;

}

void hash2(char name[8])
{
int i = 1;
key2=(int)name[0];
while(name[i]!=NULL)
{
key2+=(int)name[i];
i++;
}
Key2=key2%17;

}

struct node* input()
{
struct node *temp=(struct node*)malloc(sizeof(struct node));
temp = new node;
temp->next=NULL;
printf("qing shu ru xing ming(no more then 8 chars) :\n");
scanf("%s",&temp->name);
printf"qing shu ru dian hua hao ma(no more then 11 numbers):\n");
scanf("%s",&temp->num);
printf("qing shu ru di (no more then 20 chars):\n");
scanf("%s",&temp->address);
return temp;
}

int add()
{
struct node *newphone;
struct node *newname;
newphone=input();
printf("ni de ji lu shi");
if(find(newphone->num))
{
printf("hao ma yi jing cun zai bu nene zai tian jia.\n");
return 0;
}
if(find2(newphone->name))
{
printf("xing ming yi jing cun zai bu neng zai tian jia.\n");
return 0;
}
printf("%s_%s_%s\n",newphone->name,newphone->address,newphone->num);
newname=newphone;
newphone->next=NULL;
newname->next=NULL;
hash(newphone->num);
hash2(newname->name);
newphone->next = phone[key]->next;
phone[key]->next=newphone;
newname->next = nam[key2]->next;
nam[key2]->next=newname;
return 0;
}

int find(char num[11])
{
int isfind=0;
struct node *q;
hash(num);
node *q=phone[key]->next;
while(q!= NULL)

{
if(strcmp(num,q->num) ==0)
{
isfind=1;
break;
}
q=q->next;
}
if(isfind)
printf("%s_%s_%s\n",q->name,q->address,q->num);
return isfind;
}
int find2(char name[8])
{
int isfind=0;
hash2(name);

struct node *q=nam[key2]->next;
while(q!= NULL)
{
if(strcmp(name,q->name)==0)
{
isfind=1;
break;
}
q=q->next;
}
if(isfind)
printf("%s_%s_%s\n",q->name,q->address,q->num);
return isfind;
}

void create()
{
int i;
phone = (pnode*)malloc(13*sizeof(pnode));
for(i=0;i<13;i++)
{
phone[i]=(struct node*)malloc(sizeof(struct node));
phone[i]->next=NULL;
}

}
void create2()
{
int i;
nam = (mingzi*)malloc(13*sizeof(mingzi));
for(i=0;i<13;i++)
{
nam[i]=(struct node*)malloc(sizeof(struct node));
nam[i]->next=NULL;
}
}
void list()
{
int i;
struct node *p;
for(i=0;i<13;i++)
{
p=phone[i]->next;
while(p)
{
printf("%s_%s_%s\n",p->name,p->address,p->num);
p=p->next;
}
}
}
void list2()
{
int i;
struct node *p;
for(i=0;i<13;i++)
{
p=nam[i]->next;
while(p!=NULL)
{
printf("%s_%s_%s\n",p->name,p->address,p->num);
p=p->next;
}
}
}

void menu()
{
printf("0.tian jia ji lv.\n");
printf("2.cha zhao ji lu.\n");
printf("3.xing ming lie biao.\n");
printf("4.hao ma lie biao.\n");
printf("5.qing chu suo you ji lu.\n");
printf("6.tui chu xi tong.\n");
}

int main()
{
char num[11];
char name[8];
int sel;
create();
create2();
while(1)
{
menu();
scanf("%d",&sel);
if(sel==3)
{
char b;
printf("Input 9 to search with number,8 to name.\n");
b=getch();
if(b=='9')
{
printf("Please input the number:\n");
scanf("%s",&num);

if(!find(num))
printf("Record not exist.\n");
}
else if(b=='8')
{
printf("Please input the name:\n");
scanf("%s",&name);
if(!find(name))
printf("Record not exist.\n");
}
else
{
printf("Wrong input!Please input again!\n");
continue;
}
}
else if(sel==2)
{
printf("All record with name:\n");
list2();

}
else if(sel==0)
{

printf("Please input the information:\n");
add();
}
else if(sel==4)
{

printf("All record with number:\n");
list();
}
else if(sel==5)
{
create();
create2();

printf("All records have been removed.\n");
}

else if(sel==6)
{printf("7");
break;
}
}
return 0;
}

❺ 数据结构课程设计,求大神助攻

数据结构课程设计,求大神助攻
你这个怎么说,我,才好帮到你
嗯知道的的意思

❻ 救急!!!数据结构课程设计

//----------定义头文件---------------//
#include <iostream>
#include <string>
using namespace std;

typedef struct
{
char letter;
char *chinese;
}ElemType;//字母-汉字元素表的对应类型

typedef struct SqList
{
ElemType *elem;
int length;
}SqList;//字母-汉字对应表

//----------------生成字母-汉字对应表----------------//
void BuildLookupTable(SqList *&sq)
{
sq = new SqList;
sq->length = 10;
sq->elem = new ElemType[10];
sq->elem[0].letter = 't';
sq->elem[0].chinese = "天";
sq->elem[1].letter = 'd';
sq->elem[1].chinese = "地";
sq->elem[2].letter = 's';
sq->elem[2].chinese = "上";
sq->elem[3].letter = 'a';
sq->elem[3].chinese = "一个";
sq->elem[4].letter = 'e';
sq->elem[4].chinese = "鹅";
sq->elem[5].letter = 'z';
sq->elem[5].chinese = "追";
sq->elem[6].letter = 'g';
sq->elem[6].chinese = "赶";
sq->elem[7].letter = 'x';
sq->elem[7].chinese = "下";
sq->elem[8].letter = 'n';
sq->elem[8].chinese = "蛋";
sq->elem[9].letter = 'i';
sq->elem[9].chinese = "恨";
}

//---------定义元素e在字母-汉字对应表中的位置------------//
int LocateElem(SqList *sq,char e)
{
int i;
for(i=0;i<10;i++)
{
if (sq->elem[i].letter == e)
return i;
}
return -1;

}

//------------------定义全局变量------------------------//
int top=0;
int find=0;
char transl[200];
char leag[200];
char link[100];
int rear=1;

//----------------------main()主函数---------------------//
int main()
{
SqList *sq;
sq=new SqList;
char pop(); //定义出栈函数
char ml[2][200]; //定义两个规则,把它们存放到ml中

cout<<endl;
cout<<" ** ===魔王语言程序设计=== ** "<<endl;
cout<<" ******************************************************* "<<endl;
cout<<" ******************************************************* "<<endl;
cout<<" ** 本程序可以翻译魔王语言且按以下两条形式规则由人** "<<endl;
cout<<" ** ** "<<endl;
cout<<" **的语言逐步抽象上去: ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" **①α->ββββ... ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" **②(θβββ)->θβθβθβθ ** "<<endl;
cout<<" ** ** "<<endl;
cout<<" ** 下面只输入个第一种形式的规则,且后输入的可以嵌** "<<endl;
cout<<" ** ** "<<endl;
cout<<" **套已输入的规则。 ** "<<endl;
cout<<" ** 魔王语言支持下列字符: ** "<<endl;
cout<<" **'A', 'B', 'a', 'd', 'e', 'g', 'i', 'n', 's','t', ** "<<endl;
cout<<" **'x', 'z', '(', ')' ** "<<endl;
cout<<" ******************************************************* "<<endl;
cout<<" ******************************************************* "<<endl;
cout<<"********************************************************************************";

//本程序可以翻译魔王语言且按以下两条形式规则由人的语言逐步抽象上去:
// ①α->ββββ...
// ②(θβββ)θβθβθβθ

//下面只输入个第一种形式的规则,且后输入的可以嵌套已输入的规则

//
/*开始输入规则A和B,A比B先输入,再输入B,这样B就可以嵌套A*/
cout<<"以下请开始翻译:"<<endl;
cout<<"请先输入一组形式规则:"<<endl;
cout<<"A->";
cin>>ml[0];
cout<<"B->";
cin>>ml[1];
cout<<endl;

/*输入魔王语言,其规则为大写为魔王语言,只限定A和B(暂时),小写为人类语言,输入时用括号括起来*/

cout<<"请输入要解释的魔王语言:";
cin>>leag;
char temp[100]; //定义一个缓冲区,存放B的翻译
int sizeA=0; //定义A的长度
sizeA=strlen(ml[0]);
int wh=0; //定义缓冲区中的位置变量
for(int i=0;ml[1][i]!='\0';i++) //开始翻译B
{
if(ml[1][i]=='A') //如果嵌套了A
{

for(int n=0;n<sizeA;n++,wh++)
{
temp[wh]=ml[0][n]; //翻译至缓存区
}

}
else
{
temp[wh]=ml[1][i]; //如果不是A则原样写入
wh++;
}
}
temp[wh]=0; //为缓存区加上结束符
strcpy(ml[1],temp); //把缓存区中的串给ml[1]
int sizeB=0; //定义B的长度
sizeB=strlen(ml[1]);
int length;
length=strlen(leag); //取得魔王语言的长度
int ch; //定义一个变量保存字符
int a;
int b;

/*-------开始翻译魔王语言,并把结果存至transl中------------*/

for(int t=0;t<length;t++)
{
ch=pop();
switch(ch)
{
case 'A': //如果是A的话
for(a=0;a<sizeA;a++,find++)
{
transl[find]=ml[0][a];
}
break;
case 'B': //如果是B的话
for(b=0;b<sizeB;b++,find++)
{
transl[find]=ml[1][b];
}
break;
case '(': //但ch='('时,把括号中的小写字母保存至link中
ch=pop();
link[0]=ch; //先把第一个字符存入,后面的从link[1]开始
while(ch!=')')
{
ch=pop();
link[rear]=ch; //记得rear的初值为
rear++;
}
//由于while循环的原因,在link队列中多加了一个右括号字符,且rear指针向后多移了个单位
//故使rear减

rear=rear-2;

transl[find++]=link[0];
for(rear;rear!=0;rear--)
{
transl[find++]=link[rear];
transl[find++]=link[0];
}
//为了使后面的翻译可行话,得把rear还原为初值,即rear=1
rear=1;

break;
default:break;
}//switch结束
/*--------翻译魔鬼语言结束,结果已存至transl中------------*/
}//for结束
char *word;
word=new char;
BuildLookupTable(sq); //调用该函数生成字母-汉字对应表
int i=0;
//--------------输出转换之后的汉字--------------------//
while (transl[i]!=NULL)
{
*word = transl[i];
cout<<sq->elem[LocateElem(sq, *word)].chinese;
i++;
}
delete word;

}
char pop()//出栈函数的实现
{
return leag[top++];
}

❼ 数据结构课程设计题目~大神帮忙~谢谢

这个跟打字游戏的原理有点像啊,我以前写过一个,你可以下载下来参回考,不过是用图形库答编的
http://blog.csdn.net/blank__box/article/details/53014644

热点内容
武汉大学学生会辅导员寄语 发布:2021-03-16 21:44:16 浏览:612
七年级学生作文辅导学案 发布:2021-03-16 21:42:09 浏览:1
不屑弟高考成绩 发布:2021-03-16 21:40:59 浏览:754
大学毕业证会有成绩单 发布:2021-03-16 21:40:07 浏览:756
2017信阳学院辅导员招聘名单 发布:2021-03-16 21:40:02 浏览:800
查询重庆2018中考成绩查询 发布:2021-03-16 21:39:58 浏览:21
结业考试成绩怎么查询 发布:2021-03-16 21:28:40 浏览:679
14中医医师资格笔试考试成绩查分 发布:2021-03-16 21:28:39 浏览:655
名著赏析课程标准 发布:2021-03-16 21:27:57 浏览:881
北京大学商业领袖高端培训课程 发布:2021-03-16 21:27:41 浏览:919