當前位置:首頁 » 編程語言 » c語言建立圖

c語言建立圖

發布時間: 2022-09-10 21:55:00

1. 怎樣利用c語言製作圖片

首先你要對你想製作的圖片格式了解,比如說BMP等,你需要了解這種格式圖片的結構和數據組織,然後通過編程來創建一個這樣的圖片,接著就是填充圖片結構的工作了
之後這個圖片就可以被支持的軟體打開了

2. C語言數據結構圖的構建怎麼弄

你好,#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"

typedef struct Bnode //二叉樹節點類型
{
int m;
struct Bnode *Lchild,*Rchild;
}Btnode, *BTptr;

typedef struct Dnode //隊列節點類型
{
Btnode *pr;
struct Dnode *next;
}Qnode,*Qlink;

typedef struct //q節點類型
{
Qnode *front,*rear;
}linkqueue;

void Lcreatqueue(linkqueue *q) //創建隊列
{
q->front=(Qlink)malloc(sizeof(Qnode));
q->front->next=NULL;
q->rear=q->front;
}

Btnode *Getqtop(linkqueue *Q)
{
return(Q->front->pr);
}

void Enqueue(linkqueue *q,Btnode *e) //入隊
{
Qlink p;
p=(Qlink)malloc(sizeof(Qnode));
p->pr=e;
p->next=NULL;
if(q->front==NULL)q->front=p;
else
q->rear->next=p;
q->rear=p;
}

Btnode *DeQueue(linkqueue *q) //出隊
{ Qlink p;
if(q->front==q->rear) return(NULL);
else
{
p=q->front;
q->front=p->next;
free(p);
return(q->front->pr);
}
}

BTptr creatbtree(BTptr BT)
{
int i=1;
linkqueue *Q=NULL;
BTptr q;
//BTptr s;
Btnode *p,*Del;
Q=(linkqueue *)malloc(sizeof(linkqueue));
Lcreatqueue(Q);
Q->rear=Q->front=NULL;
BT=NULL;
while(iLchild=p->Rchild=NULL;
p->m=i;
Enqueue(Q,p);
if(i==1)BT=p;
else
{
q=Getqtop(Q); //q指向二叉樹的指針
if(p&&q)
if(i%2==0)q->Lchild=p;
else q->Rchild=p;
if(i%2==1) Del=DeQueue(Q);

}
i++;
}

return(BT);
}
main()
{BTptr *p=NULL;
p=creatbtree(p);
}

還是希望你自己會去編一遍

3. c語言中如何創建一幅圖,同時將數據輸入到圖中

結構體
sturct Shortway{
char *beigin;
char *end;
int distance;
};

4. 急!!如何用C語言建立一個圖和圖的深度優先搜索遍歷,舉個例子就行,要代碼!!謝謝!!

/* ======================================== */
/* 圖形的深度優先搜尋法 */
/* ======================================== */
#include <stdlib.h>

struct node /* 圖形頂點結構宣告 */
{
int vertex; /* 頂點資料 */
struct node *nextnode; /* 指下一頂點的指標 */
};
typedef struct node *graph; /* 圖形的結構新型態 */
struct node head[9]; /* 圖形頂點結構數組 */
int visited[9]; /* 遍歷記錄數組 */

/* ---------------------------------------- */
/* 建立圖形 */
/* ---------------------------------------- */
void creategraph(int *node,int num)
{
graph newnode; /* 新頂點指標 */
graph ptr;
int from; /* 邊線的起點 */
int to; /* 邊線的終點 */
int i;

for ( i = 0; i < num; i++ ) /* 讀取邊線的迴路 */
{
from = node[i*2]; /* 邊線的起點 */
to = node[i*2+1]; /* 邊線的終點 */
/* 建立新頂點記憶體 */
newnode = ( graph ) malloc(sizeof(struct node));
newnode->vertex = to; /* 建立頂點內容 */
newnode->nextnode = NULL; /* 設定指標初值 */
ptr = &(head[from]); /* 頂點位置 */
while ( ptr->nextnode != NULL ) /* 遍歷至鏈表尾 */
ptr = ptr->nextnode; /* 下一個頂點 */
ptr->nextnode = newnode; /* 插入結尾 */
}
}

/* ---------------------------------------- */
/* 圖形的深度優先搜尋法 */
/* ---------------------------------------- */
void dfs(int current)
{
graph ptr;

visited[current] = 1; /* 記錄已遍歷過 */
printf("頂點[%d] ",current); /* 印出遍歷頂點值 */
ptr = head[current].nextnode; /* 頂點位置 */
while ( ptr != NULL ) /* 遍歷至鏈表尾 */
{
if ( visited[ptr->vertex] == 0 ) /* 如過沒遍歷過 */
dfs(ptr->vertex); /* 遞回遍歷呼叫 */
ptr = ptr->nextnode; /* 下一個頂點 */
}
}

/* ---------------------------------------- */
/* 主程式: 建立圖形後,將遍歷內容印出. */
/* ---------------------------------------- */
void main()
{
graph ptr;
int node[20][2] = { {1, 2}, {2, 1}, /* 邊線數組 */
{1, 3}, {3, 1},
{2, 4}, {4, 2},
{2, 5}, {5, 2},
{3, 6}, {6, 3},
{3, 7}, {7, 3},
{4, 8}, {8, 4},
{5, 8}, {8, 5},
{6, 8}, {8, 6},
{7, 8}, {8, 7} };
int i;

for ( i = 1; i <= 8; i++ )
{
head[i].vertex = i; /* 設定頂點值 */
head[i].nextnode = NULL; /* 清除圖形指標 */
visited[i] = 0; /* 設定遍歷初值 */
}
creategraph(node,20); /* 建立圖形 */
printf("圖形的鄰接鏈表內容:\n");
for ( i = 1; i <= 8; i++ )
{
printf("頂點%d =>",head[i].vertex); /* 頂點值 */
ptr = head[i].nextnode; /* 頂點位置 */
while ( ptr != NULL ) /* 遍歷至鏈表尾 */
{
printf(" %d ",ptr->vertex); /* 印出頂點內容 */
ptr = ptr->nextnode; /* 下一個頂點 */
}
printf("\n"); /* 換行 */
}
printf("圖形的深度優先遍歷內容:\n");
dfs(1); /* 印出遍歷過程 */
printf("\n"); /* 換行 */
}

5. C語言圖的創建和遍歷演算法,緊急

圖的遍歷是指按某條搜索路徑訪問圖中每個結點,使得每個結點均被訪問一次,而且僅被訪問一次。圖的遍歷有深度遍歷演算法和廣度遍歷演算法,最近阿傑做了關於圖的遍歷的演算法,下面是圖的遍歷深度優先的演算法(C語言程序):
#include<stdio.h>
#include<malloc.h>
#define MaxVertexNum 5
#define m 5
#define TRUE 1
#define NULL 0
typedef struct node
{
int adjvex;
struct node *next;
}JD;
typedef struct EdgeNode
{
int vexdata;
JD *firstarc;
}TD;
typedef struct
{
TD ag[m];
int n;
}ALGRAPH;
void DFS(ALGRAPH *G,int i)
{
JD *p;
int visited[80];
printf("visit vertex:%d->",G->ag[i].vexdata);
visited[i]=1;
p=G->ag[i].firstarc;
while(p)
{
if (!visited[p->adjvex])
DFS(G,p->adjvex);
p=p->next;
}
}
void creat(ALGRAPH *G)
{
int i,m1,j;
JD *p,*p1;
printf("please input the number of graph\n");
scanf("%d",&G->n);
for(i=0;i<G->n;i++)
{
printf("please input the info of node %d",i);
scanf("%d",&G->ag[i].vexdata);
printf("please input the number of arcs which adj to %d",i);
scanf("%d",&m1);
printf("please input the adjvex position of the first arc\n");
p=(JD *)malloc(sizeof(JD));
scanf("%d",&p->adjvex);
p->next=NULL;
G->ag[i].firstarc=p;
p1=p;
for(j=2 ;j<=m1;j++)
{
printf("please input the position of the next arc vexdata\n");
p=(JD *)malloc(sizeof(JD));
scanf("%d",&p->adjvex);
p->next=NULL;
p1->next=p;
p1=p;
}
}
}
int visited[MaxVertexNum];
void DFSTraverse(ALGRAPH *G)
{
int i;
for(i=0;i<G->n;i++)
visited[i]=0;
for(i=0;i<G->n;i++)
if(!visited[i])
DFS(G,i);
}
int main()
{
ALGRAPH *G;
printf("下面以臨接表存儲一個圖;\n");
creat(G);
printf("下面以深度優先遍歷該圖 \n");
DFSTraverse(G);
getchar();
}

6. c語言實驗:圖的建立和深度遍歷程序

#include "stdio.h"
#include "string.h"
#define MAX 21

int legal(int x, int y);
void dfs(int i, int j);

char map[MAX][MAX];
int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
int w, h;
int ans;

int main(void)
{
while (scanf("%d%d", &w, &h) && (w + h))
{
int i, j;
int si, sj;
ans = 0;

memset(map, 0, sizeof(map));

for (i=0; i<h; i++)
{
scanf("%s", map[i]);

for (j=0; j<w; j++)
{
if (map[i][j] == '@')
{
si = i;
sj = j;
}
}
}

dfs(si, sj);

printf("%d\n", ans);
}

return 0;
}

int legal(int x, int y)
{
if (x < 0 || x > h || y < 0 || y > w)
{
return 0;
}

return 1;
}

void dfs(int i, int j)
{
int k;
int x, y;

++ans;
map[i][j] = '#';

for (k=0; k<4; k++)
{
x = i + dir[k][0];
y = j + dir[k][1];

if (legal(x, y) && map[x][y] == '.')
{
dfs(x, y);
}
}
}

這是一個簡單的 深搜的例子!

7. C語言編程 圖的創建與遍歷

在C語言編程中,圖的創建和遍歷:

#include<stdio.h>

#define N 20

#define TRUE 1

#define FALSE 0

int visited[N];

typedef struct /*隊列的定義*/

{

int data[N];

int front,rear;

}queue;

typedef struct /*圖的鄰接矩陣*/

{

int vexnum,arcnum;

char vexs[N];

int arcs[N][N];

}

graph;

void createGraph(graph *g); /*建立一個無向圖的鄰接矩陣*/

void dfs(int i,graph *g); /*從第i個頂點出發深度優先搜索*/

void tdfs(graph *g); /*深度優先搜索整個圖*/

void bfs(int k,graph *g); /*從第k個頂點廣度優先搜索*/

void tbfs(graph *g); /*廣度優先搜索整個圖*/

void init_visit(); /*初始化訪問標識數組*/

void createGraph(graph *g) /*建立一個無向圖的鄰接矩陣*/

{ int i,j;

char v;

g->vexnum=0;

g->arcnum=0;

i=0;

printf("輸入頂點序列(以#結束):

");

while((v=getchar())!='#')

{

g->vexs[i]=v; /*讀入頂點信息*/

i++;

}

g->vexnum=i; /*頂點數目*/

for(i=0;i<g->vexnum;i++) /*鄰接矩陣初始化*/

for(j=0;j<g->vexnum;j++)

g->arcs[i][j]=0;

printf("輸入邊的信息:

");

scanf("%d,%d",&i,&j); /*讀入邊i,j*/

while(i!=-1) /*讀入i,j為-1時結束*/

{

g->arcs[i][j]=1;

g->arcs[j][i]=1;

scanf("%d,%d",&i,&j);

}

}

void dfs(int i,graph *g) /*從第i個頂點出發深度優先搜索*/

{

int j;

printf("%c",g->vexs[i]);

visited[i]=TRUE;

for(j=0;j<g->vexnum;j++)

if((g->arcs[i][j]==1)&&(!visited[j]))

dfs(j,g);

}

void tdfs(graph *g) /*深度優先搜索整個圖*/

{

int i;

printf("

從頂點%C開始深度優先搜索序列:",g->vexs[0]);

for(i=0;i<g->vexnum;i++)

if(visited[i]!=TRUE)

dfs(i,g);

}

void bfs(int k,graph *g) /*從第k個頂點廣度優先搜索*/

{

int i,j;

queue qlist,*q;

q=&qlist;

q->rear=0;

q->front=0;

printf("%c",g->vexs[k]);

visited[k]=TRUE;

q->data[q->rear]=k;

q->rear=(q->rear+1)%N;

while(q->rear!=q->front)

{

i=q->data[q->front];

q->front=(q->front+1)%N;

for(j=0;j<g->vexnum;j++)

if((g->arcs[i][j]==1)&&(!visited[j]))

{

printf("%c",g->vexs[j]);

visited[j]=TRUE;

q->data[q->rear]=j;

q->rear=(q->rear+1)%N;

}

}

}

void tbfs(graph *g) /*廣度優先搜索整個圖*/

{

int i;

printf("

從頂點%C開始廣度優先搜索序列:",g->vexs[0]);

for(i=0;i<g->vexnum;i++)

if(visited[i]!=TRUE)

bfs(i,g);

printf("

");

}

void init_visit() /*初始化訪問標識數組*/

{

int i;

for(i=0;i<N;i++)

visited[i]=FALSE;

}

int main()

{

graph ga;

int i,j;

createGraph(&ga);

printf("無向圖的鄰接矩陣:

");

for(i=0;i<ga.vexnum;i++)

{

for(j=0;j<ga.vexnum;j++)

printf("%3d",ga.arcs[i][j]);

printf("

");

}

init_visit();

tdfs(&ga);

init_visit();

tbfs(&ga);

return 0;

}

8. C語言如何畫圖

framebuffer(幀緩沖)。
幀的最低數量為24(人肉眼可見)(低於24則感覺到畫面不流暢)。
顯卡與幀的關系:由cpu調節其數據傳輸速率來輸出其三基色的配比。
三基色:RGB(紅綠藍)。

在沒有桌面和圖形文件的系統界面,可以通過C語言的編程來實現在黑色背景上畫圖!

用下面的代碼,在需要的地方(有注釋)適當修改,就能畫出自己喜歡的圖形!

PS:同樣要編譯運行後才能出效果。

  • #include <stdio.h>

  • #include <sys/mman.h>

  • #include <fcntl.h>

  • #include <linux/fb.h>

  • #include <stdlib.h>

  • #define RGB888(r,g,b) ((r & 0xff) <<16 | (g & 0xff) << 8 | (b & 0xff))

  • #define RGB565(r,g,b) ((r & 0x1f) <<11 | (g & 0x3f) << 5 | (b & 0x1f))

  • int main()

  • {

  • int fd = open("/dev/fb0", O_RDWR);

  • if(fd < 0){

  • perror("open err. ");

  • exit(EXIT_FAILURE);

printf("xres: %d ", info.xres);

printf("yres: %d ", info.yres);

printf("bits_per_pixel: %d ", info.bits_per_pixel);

size_t len = info.xres*info.yres*info.bits_per_pixel >> 3;

unsigned long* addr = NULL;

addr = mmap(NULL, len, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);

if(addr == (void*)-1){

perror("mmap err. ");

熱點內容
手機路由器如何登陸密碼 發布:2025-01-12 18:35:41 瀏覽:463
電光貓無法連接伺服器是什麼原因 發布:2025-01-12 18:32:58 瀏覽:511
迷你世界測試服的密碼從哪裡打開 發布:2025-01-12 18:25:32 瀏覽:109
我的世界手游tis伺服器 發布:2025-01-12 18:24:28 瀏覽:584
青海省分布式伺服器雲主機 發布:2025-01-12 18:12:03 瀏覽:475
英雄聯盟安卓手機版怎麼切換 發布:2025-01-12 18:10:53 瀏覽:380
q5尊享時尚型哪些配置 發布:2025-01-12 18:05:41 瀏覽:228
安卓版本哪裡下載 發布:2025-01-12 18:05:39 瀏覽:556
mc伺服器搭建搜不到 發布:2025-01-12 17:57:37 瀏覽:17
手機手勢密碼忘了怎麼辦 發布:2025-01-12 17:14:51 瀏覽:487