紫書第六章 資料結構基礎(陣列模擬鍊錶)

2021-08-10 15:06:27 字數 2114 閱讀 5910

例題6-4 broken keyboard (a.k.a. beiju text) uva - 11988

這道題目可以直接用stl中list雙向鍊錶來做,思路和**都很簡單易想。也可以用陣列模擬鍊錶(不易懂)。

之所以不用vector是因為插入刪除比較慢慢慢

ac**(一):

stl的list版本

#include

#include

#include

using

namespace

std;

int main()

}for(it=l.begin();it!=l.end();it++)

cout

<<*it;

cout

0;}

ac**(二):

陣列模擬鍊錶版本

//陣列模擬鍊錶

#include

#include

const int maxn=100000+5;

intnext[maxn];//next[i]表示鍊錶中第i個結點下乙個結點的編號

char s[maxn];

int cur;//當前游標所在位置,即指向當前結點的右側

intlast;//當前最後乙個結點的編號

int main()

}//上述過程完成了建立乙個鍊錶的過程,next[0]的值就是第乙個字元的下標,next[1]就是第2個節點

//的下標,以此類推,最後乙個節點的next必然是-1,想想鍊錶建立過程,依次往後指,這一點應該很明白

for(int i=next[0];i!=-1;i=next[i])

printf("%c",s[i]);

printf("\n");

}return

0;}

c語言**(超時為何?):

#include

#include

const int maxn=100000+5;

char s[maxn];

typedef struct linknode,*linklist;

void linklist_init(linklist &lis)

void linklist_insert(linklist &lis,char e)

int main()

else

}node *tmp=lis;

while(tmp->next)

printf("\n");

}return

0;}

#include

const int maxn=100000+5;

int n,m;

int left[maxn],right[maxn];

int kase=0;

void link(int l,int r)

int main()

left[0]=n;right[0]=1;

int op,x,y;

bool inv=0;

while(m--)//x,y相鄰的情形統一變為y在x右側

//下面這個復合語句坑我了,下面這麼寫是對的,下面的復合語句全部用if,if是錯的

if(op==1 && x==left[y]) continue;

if(op==2 && x==right[y]) continue;

int lx=left[x],rx=right[x],ly=left[y],ry=right[y];//這樣已經儲存了x,y的左右值哦,這樣很方便後續操作

if(op==1)

else

if(op==2)

else

if(op==3)

else}}

}int j=0;

long long int ans=0;

for(int i=1;i<=n;i++)

if(inv && n%2==0) ans=(long long)n/2

*(n+1)-ans;

printf("case %d: %lld\n",++kase,ans); }

return

0;}

刷題 紫書第六章 資料結構基礎(習題)

上世紀的final題怎麼全是碼農題啊,寫著好難受 uva673 括號匹配 bug free失敗,原因是有空行 vjudge 200題紀念!uva712 二叉樹,每層都有乙個權值 uva536 由先序和中序求後序 後序是左右中啊!uva439 bfs 注意範圍是0到7 uva1600 bfs 狀態多加...

第六章 資料結構

存放同一種資料型別的多個元素的容器,通過索引 記憶體偏移量 進行元素的訪問,陣列的大小一旦確定就不能改變。陣列其實也是線性表結構,在記憶體中陣列的元素是緊挨著連續儲存的。特點 查詢快 增刪慢 舉例 定義乙個陣列 int arr new int 想在2的後面插入乙個新的元素11,這時候就需要定義乙個新...

資料結構第六章樹

第六章 樹 1.樹是n個結點的有限集。n 0時稱為空樹。在任意乙個非空樹中 1 有且僅有乙個特定的稱為根的結點 2 當n 1時,其餘節點可分為m個互不相交的有限集,其中每乙個集合又是一棵樹,並成為根的子樹。2.結點分類 結點擁有的子樹稱為結點的度。度為0的結點稱為葉結點或終端節點 度不為0的結點稱為...