⑴ 數據結構上機題c語言
#include<stdio.h>
voidMergeArr(inta[],intm,intb[],intn,intc[])
{
inti=0,j=0,k=0;
while(i<m&&j<n)
{
if(a[i]<b[j])
c[k++]=a[i++];
else
c[k++]=b[j++];
}
while(i<m)
c[k++]=a[i++];
while(j<n)
c[k++]=b[j++];
}
intmain()
{
inti;
//用數組表示順序表
intA[4]={2,5,9,10};
intB[6]={1,3,4,7,8,12};
intC[10]={0};
MergeArr(A,4,B,6,C);
for(i=0;i<10;++i)
printf("%d",C[i]);
return0;
}
⑵ c語言編程 數據結構題
(⊙o⊙)…我昨天看到了,寫完代碼之後找不到問題了
。一會兒回去把代碼貼上來。
給你參考參考:
/*
*Filename:main.c
*/
#include<stdio.h>
#include"queue.h"
intmain(void){
inti;
queueque;
/*
*創建一個大小為10的隊列,對隊列進行入隊,出隊操作
*/
que=create_queue(10);
for(i=0;i<10;i++){
in_queue(que,i);
}
for(i=0;i<5;i++){
printf("%d ",out_queue(que));
}
printf(" 隊列是否為空?");
if(is_empty(que)){
printf("TRUE ");
}else{
printf("FALSE 將隊列置空 ");
set_queue_empty(que);
}
if(is_empty(que)){
printf("隊列為空 ");
}
free_queue(que);
return0;
}
/*
*Filename:queue.c
*/
#include"queue.h"
#include<stdlib.h>
/*
*創建大小為size的循環隊列
*/
queuecreate_queue(size_tsize){
q_valuetemp=NULL;
queueque=NULL;
/*
*創建隊列指針
*/
que=(queue)malloc(sizeof(struct_queue));
que->size=size;
/*
*創建隊列值,初始化為-1
*/
que->rear=(q_value)malloc(sizeof(struct_que_value));
que->rear->value=-1;
temp=que->rear;
while(--size){
que->front=(q_value)malloc(sizeof(struct_que_value));
que->front->next=temp;
que->front->value=-1;
temp=que->front;
}
/*
*頭尾相連成為循環隊列
*/
que->rear->next=que->front;
que->rear=que->front;
returnque;
}
/*
*將隊列設置為空
*/
voidset_queue_empty(queueque){
while(que->front!=que->rear){
que->rear->value=-1;
que->rear=que->rear->next;
}
que->front->value=-1;
que->front=que->rear;
}
/*
*判斷隊列是否為空
*/
_boolis_empty(queueque){
if(que->front==que->rear&&
que->front->value==-1)
returnTRUE;
returnFALSE;
}
/*
*判斷隊列是否為滿了
*/
_boolis_full(queueque){
if(que->front==que->rear&&
que->front->value!=-1)
returnTRUE;
returnFALSE;
}
/*
*出隊,出隊之後的位置用-1標記
*/
intout_queue(queueque){
intvalue=que->rear->value;
/*
*如果隊列為空則返回-1
*/
/*
if(is_empty(que)){
printf("隊列為空 ");
return-1;
}
*/
que->rear->value=-1;
que->rear=que->rear->next;
returnvalue;
}
/*
*入隊
*/
voidin_queue(queueque,intvalue){
/*
*如果隊列滿則不能入隊
*/
/*
if(is_full(que)){
printf("隊列已滿 ");
return;
}
*/
que->front->value=value;
que->front=que->front->next;
}
/*
*釋放隊列
*/
voidfree_queue(queueque){
q_valuetemp=que->front->next;
while((que->size)--){
free(que->front);
que->front=temp;
temp=temp->next;
}
free(que);
}
/*
*Filename:queue.h
*/
#ifndef_QUEUE_H_
#define_QUEUE_H_
#include<stdio.h>
typedefint_bool;
#defineFALSE(0)
#defineTRUE(1)
typedefstruct_que_value*q_value;
typedefstruct_queue*queue;
struct_que_value{
intvalue;
q_valuenext;
};
struct_queue{
size_tsize;
q_valuefront;
q_valuerear;
};
queuecreate_queue(size_tsize);
voidfree_queue(queueque);
voidset_queue_empty(queueque);
_boolis_empty(queueque);
_boolis_full(queueque);
voidin_queue(queueque,intvalue);
intout_queue(queueque);
#endif
⑶ 數據結構與演算法作業:用C語言編程隨機生成一個迷宮,然後找出從入口到出口的路線圖。急!
幾點說明:
1.本程序是動態的,運行後自動尋找迷宮出路
2.本程序對C語言剛學完的有很大的意義.
3.四周是牆,坐標(1,1)是入口,右下腳是出口
聲明:本程序用VC調試是無法通過的需要修改
本程序調試工具是TC.....................
#include "graphics.h"
#include "dos.h"
#include "stdlib.h"
#include "process.h"
#define MAX_COL 14/*定義迷宮大小*/
#define MAX_ROW 14
typedef struct
{ int vert;
int horiz;
}offsets;
mapture(int i,int j,int k);/*標記迷宮,(i,j)標記為k模式*/
initmaze();/*初始化迷宮數組*/
findmaze(int i,int j);/*找到了(i,j)可走,標記*/
mapmaze();/*畫出原始迷宮*/
int findpath(int row,int col);/*遞歸函數,找出迷宮路徑*/
mapbar();/*畫出方格*/
initgrap();/*初始化VGA*/
print();/*迷宮走完後,輸出是否成功 */
int startx=50,starty=50;/*畫圖的屏幕坐標*/
int maze[MAX_ROW][MAX_COL];
offsets move[8]={{0,1},{1,1},{-1,1},{1,0},{-1,0},{0,-1},{1,-1},{-1,-1}}; /*8個方向尋找*/
initmaze()/*初始化迷宮數組 */
{ int i,j;
for(i=0;i<MAX_ROW;i++)/*迷宮四周設置為1 代表牆*/
{ maze[i][0]=1;
maze[i][MAX_COL-1]=1;
}
for(i=0;i<MAX_COL;i++)
{ maze[0][i]=1;
maze[MAX_ROW-1][i]=1;
}
randomize();
for(i=1;i<MAX_ROW-1;i++)/*迷宮圖形隨機產生 1表示不通 0表示可行*/
for(j=1;j<MAX_COL-1;j++)
{
maze[i][j]=random(2);
}
}
findmaze(int i,int j)/*找到 (i,j)可走*/
{
mapture(j,i,2);/*在圖形上標記*/
sleep(1);
}
returnmaze(int i,int j)/*找到(i,j)可走 ,但下一步無路走則標記*/
{
mapture(j,i,3);/*在圖形上標記*/
sleep(1);
}
print(int i)/*迷宮走完後,輸出是否成功*/
{ settextstyle(1,0,5);
if(i==1)
outtextxy(340,400,"Ture path!");
else if(i==2)
outtextxy(340,400,"No path!");
}
int findpath(int row,int col)/*用遞歸法找迷宮*/
{ int direct,next_row,next_col;
direct=0;
maze[1][1]=2;
mapture(1,1,2);
sleep(1);
while(direct<8)/*8個方向尋找*/
{ next_row=row+move[direct].vert;/*設置下一步坐標*/
next_col=col+move[direct].horiz;
if(maze[next_row][next_col]==0) /*可走,便標記*/
{ maze[next_row][next_col]=2;
findmaze(next_row,next_col) ;
if(next_row==(MAX_ROW-2)&&next_col==(MAX_COL-2))/*找到出口退出程序*/
{ print(1);
getch();
exit(0);
}
else
findpath(next_row,next_col);/*沒有到出口繼續遞歸*/
maze[next_row][next_col]=3;
returnmaze(next_row,next_col);
}
direct++;
}
return(row);
}
TC調試良好
⑷ 關於數據結構(C語言)的幾個題
1.
voidconverse(intn,intd){
SqStackS;//新建一個棧
InitStack(S);//初始化棧
intk,e;
while(n>0){
k=n%d;
push(S,k);
n=n/d;
}//將余數進棧
while(S.top!=S.base){
pop(S,e);
printf("%1d",e);
}//輸出結果
}
8.
先序遍歷:ABCDEF
中序遍歷:BCDAFE
後序遍歷:DCBFEA
⑸ 數據結構(C語言版)課後習題,求大佬解答
#include<stdio.h>
void f(char *s,char *ss,int n) { int i,k,m; char *p,*q,*r;
k=0; r=ss; while ( *r ) { r++; k++; } //找到ss的末尾0,計算ss長度
m=0; q=s; while ( *q ) { q++; m++; } //找到s的末尾0
p=q; q+=k; *q=0; q--; //計算新字元串結尾位置
for ( i=0;i<m-n;i++,p--,q-- ) *q=*p; //將s最後k個字元後移k位
for ( i=0,r--;i<k;i++,q--,r-- ) *q=*r; //將ss倒序復制到s中空出來位置
}
void main() { char s[256],ss[256]; int n;
scanf("%s%s%d",s,ss,&n); f(s,ss,n); printf("%s ",s);
}