當前位置:首頁 » 編程語言 » 數據結構c語言版習題

數據結構c語言版習題

發布時間: 2022-10-11 11:13:58

❶ 嚴蔚敏《數據結構(c語言版)習題集》答案

啊?那本書不難啊,就是有點亂有點舊。
你考哪裡啊?中科院嗎?
其實最好不要拘泥與參考書,考研給的參考書都比較垃圾,必須自己加點別的。現在還有時間,你可以多看幾本比較一下。

❷ 數據結構(C語言版)題:由一個棧的輸入序列12345,設計演算法,分別輸出54321和32145。

54321:1~5這5個數連續進棧後再5個數連續出棧,用2個循環就可以了
32145:1~3這3個數連續進棧後再3個數連續出棧,也可以用2個循環,然後是4進4出,5進5出

❸ 數據結構(C語言版)題目,大神來

Prim演算法:
intMap[10][10];
intdis[10],vis[10],F[10];

voidPrim(){
memset(vis,0,sizeof(vis));
intans=0;vis[1]=1;
for(inti=2;i<=7;i++){dis[i]=Map[i][1]!=-1?Map[i][1]:INF;F[i]=1;}
for(inti=2;i<=7;i++){
intMin=INF,p;
for(intj=1;j<=7;j++)if(!vis[j]&&dis[j]<Min)
Min=dis[p=j];
vis[p]=1;ans+=Min;
cout<<"加邊:("<<p<<","<<F[p]<<")邊權:"<<Map[p][F[p]]<<endl;
for(intj=1;j<=7;j++)if(!vis[j]&&Map[p][j]!=-1)
if(Map[p][j]<dis[j]){
dis[j]=Map[p][j];
F[j]=p;
}
}
cout<<"總權值:"<<ans<<endl;
}

intmain(){
memset(Map,-1,sizeof(Map));
while(true){
inta,b;cin>>a>>b;if(a==-1&&b==-1)break;
intc;cin>>c;Map[a][b]=Map[b][a]=c;
}
Prim();
return0;
}
輸入及運行結果:
輸入:
166
1220
1719
6717
659
2717
5719
2316
7315
7420
5424
3413
-1-1
結果:
加邊:(6,1)邊權:6
加邊:(5,6)邊權:9
加邊:(7,6)邊權:17
加邊:(3,7)邊權:15
加邊:(4,3)邊權:13
加邊:(2,3)邊權:16
總權值:76

Kruskal演算法:

structEdge{
intu,v,w;
booloperator<(constEdge&a)const{
returnw<a.w;
}
};

Edgeedge[100];inttot=0;
intpre[100];

intFind(intx){
returnx==pre[x]?x:pre[x]=Find(pre[x]);
}

voidKruskal(){
for(inti=0;i<=7;i++)pre[i]=i;
sort(edge,edge+tot);
intcnt=1,ans=0;
for(inti=0;i<tot;i++){
if(cnt==7)break;
intu=edge[i].u,v=edge[i].v,w=edge[i].w;
intfu=Find(u),fv=Find(v);
if(fu==fv)continue;
pre[fu]=fv;cnt++;ans+=w;
cout<<"加邊("<<u<<","<<v<<")"<<"邊權:"<<w<<endl;
}
cout<<"總的權值:"<<ans<<endl;
}

intmain(){
while(true){
inta,b;cin>>a>>b;if(a==-1&&b==-1)break;
intc;cin>>c;edge[tot++]=(Edge){a,b,c};
}
Kruskal();
return0;
}

輸入及運行結果:
輸入:
166
1220
1719
6717
659
2717
5719
2316
7315
7420
5424
3413
-1-1
結果:
加邊(1,6)邊權:6
加邊(6,5)邊權:9
加邊(3,4)邊權:13
加邊(7,3)邊權:15
加邊(2,3)邊權:16
加邊(6,7)邊權:17
總的權值:76

❹ 下面這是嚴蔚敏《數據結構C語言版》習題集6.36的答案,這是類C,還是純C語言,還是C++

基本上就是C語言,返回值它直接寫了一個Status,程序里的返回值是TRUE和FALSE,如果把STATUS改成BOOL就是標準的C語言了。C語言是C++的一個子集,這個程序也可以認為是C++寫的。

❺ c語言編程 數據結構題

棧先進後出,隊列先進先出,隊列的順序等價於棧的出棧順序。寫了個簡單的驗證程序,初始的出棧順序必須無誤

#include<iostream>
usingstd::cout;

//iStack元素值有序,簡化了編程,否則就要藉助於下標的有序性
//'g'作為一個額外的標記,取到此值時,表示所有元素都已入棧
chariStack[]={'a','b','c','d','e','f','g'};
charoStack[]={'b','d','f','e','c','a'};

intno=1;

//sp用於指示iStack未入棧的元素
intsp=0;

charTop()
{
returniStack[sp];
}

//ch及之前元素入棧
voidPush(charch)
{
charcc=Top();
while(cc<=ch)
{
printf("(%2d)Push: %c ",no++,cc);
sp++;
cc=Top();
}
}

voidPop(charch)
{
if(ch>=Top()) //當前要出棧的元素未入棧
Push(ch);

printf("(%2d)Pop: %c ",no++,ch);
}

intmain()
{
intcount=0;
intlen=sizeof(oStack);

//1
printf("入棧順序: ");
for(inti=0;i<len;i++)
printf("%c",iStack[i]);
printf(" ");

//2
printf("出棧順序: ");
for(inti=0;i<len;i++)
printf("%c",oStack[i]);
printf(" ");

//3
printf("出入棧操作: ");
while(count<len)
{
Pop(oStack[count]);
count++;
}

return0;

}

❻ c語言數據結構題

這是按題目要求寫的,有任何問題追問

#include<stdio.h>

typedefintStackDataType;
typedefstruct_StackData{
StackDataTypedata;
_StackData*up;
_StackData*next;
}StackData;

typedefstruct_Stack{
_StackData*head;
_StackData*last;
intlength;
}Stack;

voidinitStack(Stack*s)
{
s->head=0;
s->last=0;
s->length=0;
}

voidpush(Stack*s,StackDataTypedat)
{
StackData*curr;
if(!s->last)
{
s->head=s->last=newStackData;
curr=s->last;
curr->up=0;
}
else
{
curr=s->last;
curr->next=s->last=newStackData;
s->last->up=curr;
curr=s->last;
}
curr->next=0;
curr->data=dat;
s->length++;
}

intpop(Stack*s,StackDataType*pdat)
{
StackData*curr;
if(!s->last)return0;
curr=s->last;
if(curr->up)
{
s->last=curr->up;
s->last->next=0;
}
else
{
s->head=s->last=0;
}
*pdat=curr->data;
delete[]curr;
s->length--;
return1;
}

voidfreeStack(Stack*s)
{
StackData*curr,*curr2;
curr=s->head;
while(curr)
{
curr2=curr->next;
delete[]curr;
curr=curr2;
}
s->head=0;
s->last=0;
s->length=0;
}

voidmain()
{
inti,dat;
Stacks1,s2;

initStack(&s1);//初始化棧1
initStack(&s2);//初始化棧2

for(i=1;i<=5;i++)
{
push(&s1,i);//棧1分別入棧數據12345
}
for(i=0;i<5;i++)
{
pop(&s1,&dat);//棧1出棧
push(&s2,dat);//棧2入棧
}
for(i=0;i<5;i++)
{
if(i)printf("");//顯示第一個數據前面不加空格
pop(&s2,&dat);//棧2出棧
printf("%d",dat);//顯示棧2出棧的數據
}

freeStack(&s1);//釋放棧1內存,如果數據未全部出棧,會把未釋放的內存釋放
freeStack(&s2);//釋放棧2內存,如果數據未全部出棧,會把未釋放的內存釋放
}

❼ 數據結構(C語言)題:廣義表((a,b),c,d)的表頭是(   )。

對廣義表來說,你看錶頭和表尾只要把最外面的一個括弧里的所有元素同等對待,就算裡面還有廣義表你也把它當為單個元素看待,這樣就明了了,裡面三個元素,(a,b),c,d,因此表頭是(a,b),表尾是d~~

❽ 嚴蔚敏數據結構c語言版 習題上自己做了跟答案不太一樣 不知道對不對

我覺得沒什麼問題。
檢查當前節點:
如果跟後面節點相等,刪除後面的節點;否則檢查後面的節點,直到最後一個節點。

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

熱點內容
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:122
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:298
手掛機腳本游 發布:2024-12-22 19:38:00 瀏覽:429
層次原理圖如何編譯 發布:2024-12-22 19:27:17 瀏覽:371
android計算緩存大小 發布:2024-12-22 19:16:54 瀏覽:660
php訪問模塊 發布:2024-12-22 19:05:24 瀏覽:272
電梯IC加密 發布:2024-12-22 19:04:47 瀏覽:376
腳本圈是引流加粉嗎 發布:2024-12-22 18:41:26 瀏覽:392
ajax文件上傳表單提交 發布:2024-12-22 17:55:00 瀏覽:856
win7無法共享的文件夾 發布:2024-12-22 17:53:39 瀏覽:41