資料結構已學知識總結

2022-05-04 06:42:08 字數 3668 閱讀 2652

//初始化

list makeempty()

//查詢

//#define error -1

position find(list l,elementtype x)

if(i>l->last) printf("您查詢的數不存在\n");

else printf("您查詢數的儲存下標為:%d",i);}

//插入

bool insert(list l ,elementtype x,int i)

//檢查插入位序的合法性:是否在1~n+1.

if(i<1||i>l->last+2)

for(j=l->last;j>=i-1;j--)

l->data[i-1] = x;

l->last++;

return true;}

//刪除

bool delete(list l,int i)

else

l->last--;

printf("刪除成功\n"); }

} //求表長

int length(list l)

void destroylist(linklist &l)

}void createlistf(linklist& l, int n)//頭插法建鍊錶,l表示帶頭結點鍊錶,n表示資料元素個數

}void createlistr(linklist& l, int n)//尾插法建鍊錶,l表示帶頭結點鍊錶,n表示資料元素個數

head->next = null;

}

1、stack

用資料結構c++中自帶的標頭檔案中

定義stack物件的示例**如下:

stacks1;stacks2;

stack的基本操作有:

1.入棧,如例:s1.push(x);

2.出棧,如例:s1.pop();注意,出棧操作只是刪除棧頂元素,並不返回該元素。**

3.訪問棧頂,如例:s1.top()

4.判斷棧空,如例:s1.empty(),當棧空時,返回true。

5.訪問棧中的元素個數,如例:s1.size()

2、queue

用資料結構c++中自帶的標頭檔案中。

queueq1;queueq2;

queue的基本操作有:

1.入隊,如例:q1.push(x); 將x接到佇列的末端。

2.出隊,如例:q1.pop(); 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。

3.訪問隊首元素,如例:q1.front(),即最早被壓入佇列的元素。

4.訪問隊尾元素,如例:q1.back(),即最後被壓入佇列的元素。

5.判斷佇列空,如例:q1.empty(),當佇列空時,返回true。

6.訪問佇列中的元素個數,如例:q1.size()

bf(brute force)演算法是普通的模式匹配演算法,bf演算法的思想就是將目標串s的第乙個字元與模式串t的第乙個字元進行匹配,若相等,則繼續比較s的第二個字元和 t的第二個字元;若不相等,則比較s的第二個字元和t的第乙個字元,依次比較下去,直到得出最後的匹配結果。

int bf(char s,char t,int pos)

}if(t[j]=='\0')

return i+1;

else

return -1;

}

//建立模式串的next陣列

void getnext(char* p, int next)

else

}}//進行主串和模式串匹配

void getnext(const char* pattern,int next)

}

銀行業務佇列簡單模擬

由題目可以來理清思路,建立ab兩個佇列,分別將編號以偶數和非偶數儲存在ab兩個佇列,然後將按照輸出要求,先輸出兩個a佇列的編號,在輸出b佇列的乙個編號,判斷兩個佇列是否為空,當a或b隊列為空,就退出,將a或b中剩下的佇列全部輸出。

**如下:

#include#include#define maxsize 1000

#define overflow -2

#define ok 1

#define error -1

using namespace std;

//定義佇列,有頭位置和尾位置記錄

typedef struct

sqqueue;

//新建乙個佇列

int initqueue(sqqueue& q)

//出佇列的乙個元素,儲存在e中。

int dequeue(sqqueue& q, int& e)

//將陣列中編號遍歷輸出。

void print(int* arr, int n)

int main()

else//判斷為偶數儲存在b佇列

}

//當ab兩個佇列都不為空,將兩個a佇列頭元素,乙個b佇列頭元素,儲存在result陣列中。

while ((a.front != a.rear) && (b.front != b.rear)

//如果a佇列不為空,將a佇列元素儲存在result陣列中

while (a.front != a.rear)

//如果b佇列不為空,將b佇列元素儲存在result陣列中

while (b.front != b.rear)

//輸出result陣列

由所學知識來看這個題目,要用到kmp演算法,由我們理解的kmp演算法的精髓部分,我們還需要將他們總結起來,能夠實現具體功能,才能說是做好了,所以自己寫出整體**,是什麼重要的。

**如下:

#include using namespace std;

#include #include void getnext(char* p, int next);//由模式串算出next陣列所含值。

int kmpsearch(char* s, char* p);//在主串中找到模式串。

int main()

else

}return 0;

}void getnext(char* p, int next)

else

}}int kmpsearch(char* s, char* p)

else

}if (j == plen)

return i - j;

else

return -1;

}

資料結構知識點總結

1 樹 森林 和二叉樹可以相互轉化,規則是 左孩子右兄弟 即當前節點的左孩子在由二叉樹轉化為樹的過程中,左孩子還是當前節點的左孩子,而右節點會變成當前節點的兄弟。2 設二叉樹度為0的節點有n0個,度為2的節點為n2,則n2 n0 1 1 無向圖的資料結構是鄰接多重表,有向圖的資料結構是十字鍊錶。二者...

資料結構知識點總結

佇列 用陣列表示迴圈佇列 為了區分隊空和隊滿,入隊時少用乙個佇列元素,約定以 隊頭指標在隊尾指標的下乙個位置作為隊滿的標誌 也就是說如果隊尾快要趕上隊頭了就認為滿了 也可以通過增加乙個資料成員size,記錄佇列中元素的數量。對於佇列的鏈式儲存結構,不存在溢位的問題。廣義表 例如建立乙個廣義表 ls ...

學資料結構堆襸 學資料結構有多痛苦?

同為女生,感覺資料結構算還好,理由大概是因為堅信它有用吧 畢竟當自己排序不再只會冒泡 存資料不再只會陣列的時候還是蠻爽的。除了個人肉眼可見的提公升這一正向激勵外,上課老師也經常強調實用性 效率 走上崗位企業要的是什麼,應用性極強讓我數構課偶爾困得半死也不敢像高數一樣直接睡覺 反而有種想學好的使命感 ...