❶ 數據結構與演算法分析練習
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<stack>
usingnamespacestd;
structnode{
inte;
structnode*next;
};
/**
*初始化link
*head為根節點,不保存數據
*/
structnode*initLink(structnode*link){
link=(structnode*)malloc(sizeof(structnode));
link->next=NULL;
structnode*q=link;
intn=0;
while(n!=-1){//終止條件自行修改,比方說,建立n個節點
cin>>n;
if(n>0){
structnode*t=(structnode*)malloc(sizeof(structnode));
t->e=n;
t->next=NULL;
q->next=t;
q=t;
}
}
returnlink;
}
/**逆置(頭插法)
*另有,遞歸法。遞歸法耗用資源多,頭插法比較好。
*#成功逆置返回1,否則返回0(不會有0的情況發生)
*/
intReverseList(structnode*head){
structnode*p=head->next,*q;
head->next=NULL;
while(p){
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
return1;
}
/**
*#列印出轉換的N進制數(N<9),成功返回1,否則返回0
*/
intten_to_N(intx,intN){
intr=-1;
if(x>0){
r=x%N;
ten_to_N(x/N,N);
}
if(r>=0)
printf("%d",r);
return1;
}
structqueue{
stack<int>s1,s2;
};
/**
*#將x插入到隊列q中,成功返回1,否則返回0
*/
intenqueue(structqueue*q,intx){
if(q->s1.size()>0)
q->s1.push(x);
else{
while(q->s2.size()>0){
q->s1.push(q->s2.top());
q->s2.pop();
}
q->s1.push(x);
}
return1;
}
/**
*#隊列q執行出隊操作,成功則返回出隊的元素,否則返回0
*/
intdequeue(structqueue*q){
intt=0;
if(q->s2.size()>0){
q->s2.top();
q->s2.pop();
}else{
while(q->s1.size()>1){
q->s2.push(q->s1.top());
q->s1.pop();
}
if(q->s1.size()==1){
t=q->s1.top();
q->s1.pop();
}
}
returnt;
}
intmain()
{
structnode*head=NULL;
head=initLink(head);
if(ReverseList(head)==1){
structnode*p=head->next;
while(p){
printf("%d",p->e);
p=p->next;
}
printf(" ReverseListdone. ");
}
ten_to_N(10,4);
structnode*q;
while(head){
q=head->next;
free(head);
head=q;
}
}
❷ 求解,數據結構與演算法
關鍵字序列是{19,13,33,02,16,24,7},計算過程如下:
插入關鍵字19,索引(哈希值)=19mod11=8,存入哈希表:
下標012345678910
關鍵字19
插入關鍵字13,索引(哈希值)=13mod11=2,存入哈希表:
下標012345678910
關鍵字1319
插入關鍵字33,索引(哈希值)=33mod11=0,存入哈希表:
下標012345678910
關鍵字331319
插入關鍵字02,索引(哈希值)=02mod11=2,有沖突,取新索引2+1=3,沒有沖突,存入哈希表:
下標012345678910
關鍵字3313219
插入關鍵字16,索引(哈希值)=16mod11=5,存入哈希表:
下標012345678910
關鍵字331321619
插入關鍵字24,索引(哈希值)=24mod11=2,有沖突,取索引2+1=3,仍有沖突,
再取索引3+1=4,沒有沖突,存入哈希表:
下標012345678910
關鍵字33132241619
插入關鍵字7,索引(哈希值)=7mod11=7,存入哈希表:
下標012345678910
關鍵字331322416719
這就是最後得到的哈希表.
//C語言測試程序
#include<stdio.h>
#include<stdlib.h>
#defineSUCCESS1
#defineUNSUCCESS0
#defineHASHSIZE11
#defineNULLKEY-1
typedefintStatus;
typedefstruct
{
int*elem;
intcount;
}HashTable;
intm=0;
StatusInitHashTable(HashTable*H)
{
inti;
m=HASHSIZE;
H->count=m;
H->elem=(int*)malloc(m*sizeof(int));
for(i=0;i<m;i++)
{
H->elem[i]=NULLKEY;
}
returnSUCCESS;
}
intHash(intkey)
{
returnkey%m;
}
voidInsertHash(HashTable*H,intkey)
{
intaddr;
intpos;
pos=Hash(key);
addr=pos;
while(H->elem[addr]!=NULLKEY)
{
////////
printf("索引=%d有沖突. ",addr);
////////
addr=(addr+1)%m;
if(addr==pos)
{
printf(" 散列表已滿! ");
exit(1);
}
}
H->elem[addr]=key;
}
StatusSearchHash(HashTableH,intkey,int*addr)
{
*addr=Hash(key);
while(H.elem[*addr]!=key)
{
*addr=(*addr+1)%m;
if(H.elem[*addr]==NULLKEY||*addr==Hash(key))
{
returnUNSUCCESS;
}
}
returnSUCCESS;
}
voidshowHashTable(HashTable*H)
{
inti;
for(i=0;i<H->count;i++)
{
printf("%4d",i);
}
printf(" ");
for(i=0;i<H->count;i++)
{
if(H->elem[i]==NULLKEY)
{
printf("%4c",0x20);
}
else
{
printf("%4d",H->elem[i]);
}
}
printf(" ");
}
intmain()
{
intkey[]={19,13,33,02,16,24,7};
intlen;
inti;
HashTableH;
InitHashTable(&H);
len=sizeof(key)/sizeof(key[0]);
for(i=0;i<len;i++)
{
printf("插入%d,索引(Hash)=%d ",key[i],Hash(key[i]));
InsertHash(&H,key[i]);
showHashTable(&H);
}
return0;
}
❸ 991數據結構與演算法與824數據結構與演算法的區別
沒有區別。
數據結構與演算法和數據結構都是書的名字,他們的內容有一點點區別,區別就是內容分布上有一點不同,絕大部分都是一樣的。
相同的部分都是數據結構。
數據結構常見的包括線性表(數組,鏈表),棧,隊列,二叉樹,平衡二叉樹,各種樹,圖,基本上是這些內容。
❹ 哪本《數據結構與演算法》最好
如果是想入門,推薦程傑的《大話數據結構》,沒有太多的生搬硬套,語言幽默風趣,口語化的說教。很難想像在公交車或者地鐵上讀嚴蔚敏的數據結構,但是我的的確確在地鐵上(半個小時),讀完了程傑兄兩章《大話》。
❺ 數據結構與演算法
看題可知實際上就是要從表A中刪除出現在表B和表C交集D里的元素
那麼首先肯定是要先確定表B和表C和交集D,由於ABC都是遞增線性表,所以可以確定B和表C和交集D的邊界(可以不用從頭到尾來遍歷表B和表C,屬於優化范疇),之後再遍歷A表刪除其在D中的元素,遍歷時同樣適用上面的邊界處理
既然是要嵌套遍歷三個表那麼時間復雜度自然就是na*nb*nc
❻ 數據結構與演算法之間的關系
數據結構:是一門研究程序設計中計算機操作的對象以及它們之間的關系和運算的一門學科。
研究是數據元素之間抽象化的相互關系和這種關系在計算機中的存貯表示,並對每種結構定義各自的運算,設計出相應的演算法,而且經過運算後所得的新結構一般仍然是原來的結構類型。
演算法:是執行特定計算的有窮過程。特點: 動態有窮,確定性,輸入,輸出,可行性。
呵呵!下面你自己想辦法了,自己的事自己做,就這么多了啊
❼ 數據結構與演算法分析
數據結構與演算法分析(C++版第2版)/國外計算機科學教材系列
作者:著者:美Shaffer,C.A;譯者:張銘等譯 出版社:電子工業出版社