當前位置:首頁 » 編程語言 » 數據結構與演算法c語言編程題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

數據結構與演算法c語言編程題

發布時間: 2023-07-31 20:51:41

⑴ 數據結構上機題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);

}