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

c語言數據結構

發布時間: 2022-01-24 21:30:30

A. 數據結構(c語言

#define maxsize 100 //鏈表最大長度
typedef struct{
ElemType data;
int cur;
}component,SLinkeList[maxsize]
這中描述方法便於在不設「指針」類型的高級程序設計語言中使用鏈表結構。在如上的描述的鏈表中,數組的一個分量表示一個結點,同時用游標(指示器cur)代替指針指示結點在數組中的相對位置。數組第零分量可以看成頭結點,其指針域指示鏈表的第一個結點。這種存儲結構仍需要預先分配一個較大的空間,但在作線性表的插入和刪除操作時不需要移動元素,僅需修改指針,故仍具有鏈式存儲結構的主要特點。
void InitSpace_SL(SLinkeList &space)
//InitSpace_SL( )為創建鏈表函數
{
//將一維數組space中的各分量鏈成一個備用鏈表,space[0].cur為頭指針
//"0"表示空指針
for(i=0;i<maxsize-1;++i)
space[i].cur=i+1;
space[maxsize-1].cur=0;
}

B. c語言的數據結構

你真有意思,什麼叫C語言的數據結構?數據結構是所有語言所共有的好吧!就像你說話想表達一個意思一樣,你可以用漢語說,也可以用日語說,還可以用英語說。

簡單的說,數據結構分兩個部分:
存儲表示和抽象表示。存儲表示就是元素在內存中的真實物理表示。抽象表示就是忽略元素的存儲表示,只研究它的抽象屬性。比如說表,抽象意義上,就是表;存儲上來說,分成順序表,也就是數組,和鏈表。

C. c語言數據結構

#include <stdlib.h>
#include <iostream>

#define OK 1
#define MVNum 100

typedef int Status;
typedef char VerTexType;
typedef int ArcType;
struct closedgestruct
{
VerTexType adjvex; //最小邊的頂點ArcType
ArcType lowcost; //最小邊的權值
}closedge[MVNum];

Status Min()
{
int x,N,min=closedge[1].lowcost;
for(x=1;x<=MVNum;x++)
{
if(min>closedge[x].lowcost)
min=closedge[x].lowcost;//找closedge數組中權值最小的那組
N=x;//N保存權值最小的那組的下標
}
std::cout<<N;//輸出最小權值對應的那組數組的下標
return OK;
}

D. 數據結構和C語言有什麼區別

數據結構是數據及數據之間的關系,C語言只是一門編程語言,可以用C語言來寫程序,實現數據按照某種特定的關系來組織和管理數據(也就是實現數據結構),所以數據結構的課程會有不同的語言版本,其實就是用不同的語言來實現數據結構了。呵呵,不知道你明白沒有呢~~

E. c語言的數據結構是什麼

根據你的問題,我想一種計算機語言的數據結構,是指這種語言系統所提供的,在程序中存儲數據可以使用的基本數據組織形式。C語言的基本數據結構除了各種數據類型的簡單變數外,主要的就是數組、結構、聯合。

F. C語言編寫 數據結構

#include<stdio.h>
#include<stdlib.h>
typedefstructintnumber
{
intn;
structintnumber*next;
}INTNUM;
INTNUM*creat(intnum)/*建立鏈表*/
{
INTNUM*p1,*p2,*head;
inti;
p1=(INTNUM*)malloc(sizeof(INTNUM));
head=p1;
p2=p1;
for(i=0;i<num-1;i++)
{
p1=(INTNUM*)malloc(sizeof(INTNUM));
p2->next=p1;
p2=p1;
}
p1->next=NULL;
returnhead;
}
voidinput(INTNUM*head)/*輸入鏈表數據*/
{
INTNUM*p;
p=head;
while(p->next!=NULL)
{
scanf("%d",&(p->n));
p=p->next;
}
scanf("%d",&(p->n));
}
voidoutput(INTNUM*head)/*輸出鏈表數據*/
{
INTNUM*p;
p=head;
while(p->next!=NULL)
{
printf("%d/t",p->n);
p=p->next;
}
printf("%d/n",p->n);
}

voidmain(void)
{
INTNUM*pa,*pb,*pc,*heada,*headb,*headc;/*pc是指向新鏈表的指針*/
intcounta,countb;/*counta,countb是建立鏈表的結點數*/
printf("請輸入建立A鏈表的結點數:");
scanf("%d",&counta);
pa=creat(counta);
heada=pa;
printf("請按遞增輸入A鏈表結點上的數據:");
input(heada);
printf("列印A鏈表結點上的數據:/n");
output(heada);
printf("請輸入建立B鏈表的結點數:");
scanf("%d",&countb);
pb=creat(countb);
headb=pb;
printf("請按遞增輸入B鏈表結點上的數據:");
input(headb);
printf("列印B鏈表結點上的數據:/n");
output(headb);
printf("將鏈表A和鏈表B仍然按照遞增關系合並成一個新的鏈表C:");
headc=heada;
pc=pa;
pa=pa->next;
while(pa&&pb)
{
if(pa->n<=pb->n)
{
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pc->next;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
printf("列印合並後鏈表結點上的數據:/n");
output(headc);
}
結果如下:
請輸入建立A鏈表的結點數:3
請按遞增輸入A鏈表結點上的數據:12030
列印A鏈表結點上的數據:
12030
請輸入建立B鏈表的結點數:5
請按遞增輸入B鏈表結點上的數據:218222632
列印B鏈表結點上的數據:
218222632
將鏈表A和鏈表B仍然按照遞增關系合並成一個新的鏈表C:列印合並後鏈表結點上的數據:
12182022263032

G. C語言的數據結構是什麼

數據結構,data
strucure
是具有特定關系的數據元素的集合。它包含兩方面的信息:D+S
D
即數據元素的集合,也就是數據對象;S
數據元素間的關系,而這種關系指的是數據元素之間本身的關系
也叫做邏輯結構!而這種邏輯結構需要通過一種高級語言
比如c語言才能使得將這種邏輯結構在計算機中表現出來
也就是通過高級語言存儲結構。

H. c語言 數據結構(面向c語言)

只看書確實不行,要動手去做,人都有惰性,但要想成為強者你就要付出,當你戰勝你的惰性並自己動手做一些小程序時,你收獲的不僅僅是編寫出這些程序的成就感,更有成功的喜悅。我原來也是這樣不想去手去做,但老師布置的做作業都非常有針對性,一定要靜下心來去完成,可能剛開始做著很難或很慢,但堅持下去,相信你可以辦到的,學編程語言歸根結底還是學語言,就像你學英語等外國語言一樣,學語言就要多動口手,平時多積累,也許積累的過程很痛苦,但等有一天你回首就會發現你學到了很多。總而言之:堅持+動手=學會編程。
至於學習編程的論壇網站,給你一些個人覺得可以的:CSDN 編程論壇 編程愛好者論壇 VC知識庫等都不錯,你可以注冊一個號,平時有什麼問題直接上去問就行了,多學多動手,堅持下去,多問。
祝成功。。。。。。。。。

I. C語言 數據結構

第一處:s->next=q->next;改為
s->next = p;
因前一句為q->next=s;
連起來相當於s->next = s;
這樣的鏈表是有一個環的,插入後再遍歷會導致死循環。
或者可以這樣把兩句倒過來寫:
s->next=q->next;
q->next=s;
兩種選一個。
第二處:
free(p);
插入一個節點無需free任何東西,因原有所有節點都需要保留。