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