预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共36页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第2章 #include<stdio.h> #include<stdlib.h> typedefstructdata{//定义一个结构体"data" intnum;//用于存放人的序号 intval;//用于存放密码 }typedata; typedefstructnode{//定义一个结构体(结点),其中包含一个数据域和一个指针域 typedatadata;//结构体的嵌套 structnode*next; }listnode; typedeflistnode*linklist; linklisthead; intmain(void)//进入主函数 { intn,i,b,m,j; linklisthead=(listnode*)malloc(sizeof(listnode));//申请一个空间(头结点head) listnode*p,*q;//定义两个可以指向结点的指针 printf("输入总人数:"); scanf("%d",&n); q=head;//用指针q指向头结点 for(j=1;j<=n;j++)//本次循环主要是将每一个人的数据(包括序号、密码)存入循环链表中 { printf("请输入第%d号同学的密码:\n",j); scanf("%d",&b); printf("\n"); q->next=(listnode*)malloc(sizeof(listnode)); //将头结点的next域指向刚生成的一个结点 q=q->next; q->data.val=b;//输入密码 q->data.num=j;//输入序号 q->next=head->next;} //将尾结点的next域指向第一个结点,构成循环链表 printf("请输入一个数m:"); scanf("%d",&m); if(m<=0)printf("输入错误"); do{ i=1; while(i!=m){//将q指针指向所要输出的结点的前一结点 q=q->next; i++; } p=q->next;//p指向输出结点 q->next=p->next;//将输出结点的前结点的next域指向输出结点的后结点 printf("num:%d\tval:%d\n",p->data.num,p->data.val);//输出 m=p->data.val;//取得输出结点的密码 free(p); }while(q->next!=q);//只剩最后一个结点时结束 printf("num:%d\tval:%d\n",q->data.num,q->data.val);//输出最后一个结点 free(q);//释放最后一个结点 free(head);//释放头结点 system("pause"); } 第3章 (1) #include<iostream> #include<stdio.h> #include<conio.h> #defineM4 #defineN6 #defineMaxSize100 usingnamespacestd; intmg[M+2][N+2]={ {1,1,1,1,1,1,1,1}, {1,0,0,1,0,0,0,1}, {1,1,0,0,0,0,0,1}, {1,0,0,1,0,1,0,1}, {1,0,0,0,0,0,0,1}, {1,1,1,1,1,1,1,1}, }; struct { inti,j,di; } Stack[MaxSize],Path[MaxSize]; inttop=-1; intcount=1; intminlen=MaxSize; voidPrint() { for(inti=0;i<M+2;i++) { for(intj=0;j<N+2;j++) if(mg[i][j])cout<<"1"; elsecout<<"0"; cout<<endl; } } voidmgpath() {intcount=1; inti,j,di,find,k; top++; Stack[top].i=1; Stack[top].j=1; Stack[top].di=-1; mg[1][1]=-1; while(top>-1) { i=Stack[top].i; j=Stack[top].j; di=Stack[top].di; if(i==M&&j==N) { cout<<count++<<endl; for(k=0;k<=top;k++) { cout<<"("<<Stack[k].i<<","<<Stack[k].j<<")"<<""; if((k+1)%5==0)cout<<"\n"; } cout<<"\n"; if(top+1<minlen) {