先定义int a(3)(3);
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
a(i)(j)=i+j;
我用的是手机没办法帮你写标准写全你就自己把过程完善一下吧!
#include <stdioh>//N皇后问题
#include <
stdlibh
>
#include <stdioh>
#include <
iostreamh
>
#include <
timeh
>
#include <dosh>
#include<malloch>
typedef struct {
int elem;
int length;
int listsize;
}Sqlist;
int InitList(Sqlist & L){//初始化
Lelem=(int )malloc(100sizeof(int));
if(!Lelem)
return 0;
Llength=0;
Llistsize=100;
return 1;
}
int Insert(Sqlist & L,int e){//插入
int m=0,i=0;
int p=&Lelem[0],j=&Lelem[0];
if(Llength==0)
{ p=e; Llength++;return 1;}
for(i;i<Llength;i++)
if(e>=(p+i))
m=i+1;
for(i=Llength;i>m;i--)
(j+i)=(j+i-1);
Lelem[m]=e;
Llength++;
return 1;
}
void Print(Sqlist &L,int n){//
遍历
打印输出
int k=1,i=0; intp=&Lelem[0];
for(i=0;i<nn;i++,k++){
printf("%d ",(p+i));
if(k==n){k=0;printf("\n");}}
printf("\n\n\n\n\n\n\n");
}
int ReturnK(Sqlist &L,int k){//返回第K个元素的值
intp=&Lelem[0];
return (p+k-1);
}
void FuK(Sqlist &L,int k,int e){//将第k个元素赋值为e
int p=&Lelem[0];
(p+k-1)=e;
}
int TiaoJian(Sqlist L,int n,int &e){//是否满足皇后问题判断
int b[100];
int m=0,h=2n;
for(int k=0;k<2n;k++) b[k]=0;
for(int i=1;i<=nn;i++)
if(ReturnK(L,i)==1)
{b[m]=(i-1)/n+1;m++;b[m]=i-(b[m-1]-1)n;m++;}
for(int c=0;c<2n;c++)
if(b[c]==0) {h=c;break;}
for( c=0;c<h-2;c=c+2)
for(int d=c+2;d<h;d=d+2)
if(b[c]==b[d]||b[c+1]==b[d+1]||b[d+1]-b[c+1]==b[d]-b[c]||b[d+1]-b[c+1]==b[c]-b[d])
return 0;
if(h==2n){
printf("\n\n%d皇后问题第%d个排列!\n\n",n,e);e++;
}
return 1;
}
void Trial(Sqlist &L,int i,int n,int &e){//皇后问题
int j;
if(i>n){Print(L,n);}
else for(j=1;j<=n;j++){
FuK(L,ni-n+j,1);
if(TiaoJian(L,n,e)==1)
Trial(L,i+1,n,e);
FuK(L,ni-n+j,0);
}
}
void main(){
int k,i=0;
printf("\n\n请输入要n皇后问题个数:\n");
scanf("%d",&k);
time_t rawtime;
struct tm
timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
Sqlist L1;
InitList(L1);
for(i=0;i<kk;i++)
Insert(L1,0);
int e=1;
Trial(L1,1,k,e);
printf ( "The current date/time is: %s", asctime (timeinfo) );
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "The current date/time is: %s", asctime (timeinfo) );
printf("哈哈哈哈\(^o^)/~\n");
system("pause");
}
一、概述
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机 *** 作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。
二、 系统分析
1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要 *** 作的变化过程。
2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存 *** 作数和运算结果。
3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4. 程序执行时的命令:
本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误) 5 测试数据。
2
算术表达式求值演示
一、概述
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机 *** 作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是算术表达式求值演示。表达式计算是实现程序设计语言的基本问题之一,也是栈的应用的一个典型例子。设计一个程序,演示用算符优先法对算术表达式求值的过程。深入了解栈和队列的特性,以便在解决实际问题中灵活运用它们,同时加深对这种结构的理解和认识。
二、 系统分析
1. 以字符列的形式从终端输入语法正确的、不含变量的整数表达式。利用已知的算符优先关系,实现对算术四则混合运算表达式的求值,并仿照教科书的例子在求值中运算符栈、运算数栈、输入字符和主要 *** 作的变化过程。
2. 一般来说,计算机解决一个具体问题时,需要经过几个步骤:首先要从具体问题抽象出一个适当的数学模型,然后设计一个解决此数学模型的算法,最后编出程序,进行测试,调试直至得到想要的答案。对于算术表达式这个程序,主要利用栈,把运算的先后步骤进行分析并实现简单的运算!为实现算符优先算法,可以使用两个栈,一个用以寄存运算符,另一个用以寄存 *** 作数和运算结果。
3. 演示程序是以用户于计算机的对话方式执行,这需要一个模块来完成使用者与计算机语言的转化。 4. 程序执行时的命令:
本程序为了使用具体,采用菜单式的方式来完成程序的演示,几乎不用输入什么特殊的命令,只需按提示输入表达式即可。(要注意输入时格式,否者可能会引起一些错误) 5 测试数据。
*** 作集合:
(1)void InitStack1(SqStack1 &S1);//声明栈建立函数 (2)void InitStack2(SqStack2 &S2);//声明栈建立函数
(3)void evaluate(SqStack1 &S1,SqStack2 &S2);//确定如何入栈函数 (4)void Push1(SqStack1 &S1,char e);//声明入栈函数 (5)void Push2(SqStack2 &S2,float e);//声明入压栈函数 (6)char GetTop1(SqStack1 &S1);//声明取栈顶元素函数 (7)float GetTop2(SqStack2 &S2);//声明取栈顶元素函数 (8)char Pop1(SqStack1 &S1);//声明出栈函数 (9)float Pop2(SqStack2 &S2);//声明出栈函数 (10)char Compare(char m,char n);//声明比较函数
(11)float Operate(float a,char rheta,float b);//声明运算函数 (12)void DispStack1(SqStack1 &S1);//从栈底到栈顶依次输出各元素 (13)void DispStack2(SqStack2 &S2);//从栈底到栈顶依次输出各元素 }ADT SqStack
结构分析:
栈中的数据节点是通过数组来存储的。因为在C语言中数组是用下标从零开始的,因此我
们在调用他们的数据是要特别注意。指针变量的值要么为空(NULL),不指向任何结点;要么其值为非空,即它的值是一个结点的存储地址。注意,当P为空值时,则它不指向任何结点,此时不能通过P来访问结点,否则会引起程序错误。如果输入的数字不符合题目要求,则会产生错误结果。
算法的时空分析:
时间和空间性能分析:时间上,对于含n个字符的表达式,无论是对其进行合法性检测还是对其进行入栈出栈 *** 作n次,因此其时间复杂度为O(n)。空间上,由于是用数组来存储输入的表达式,用栈来存储运算中的数据和运算符,而栈的本质也用到的数组,数组在定义时必须确定其大小。在不知表达式长度的情况下确定数组的长度确非易事,此时极易造成空间的浪费,因此空间性能不是很好。
#include<stdioh>
int main()
{ int a[10],i,sum=0;
for(i=0; i<10; i++)
{ scanf("%d",&a[i]);
sum+=a[i];
}
printf("%d\n",sum);
return 0;
}
#include<stdioh>
void main()
{
int a[3][4];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
printf("\nPlease input a[%d][%d]",i,j);
scanf("%d",&a[i][j]);
}
printf("\nOutput:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
{
printf("%d",a[2-i][3-j]);
if(3==j)printf("\n");
}
}
以上就是关于定义一个3行3列的二维数组,然后对各元素进行赋值,给元素值为自身下标之和,如a[2][2]=4;全部的内容,包括:定义一个3行3列的二维数组,然后对各元素进行赋值,给元素值为自身下标之和,如a[2][2]=4;、利用《数据结构》课程知识完成C语言程序设计“N皇后问题”(堆栈,一维数组,普通算法都可以,用C语言写、《数据结构 课程设计》表达式求值 实验报告等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)