//標頭檔案
#ifndef _list_h
typedef struct node *ptrtonode;
typedef ptrtonode list;
typedef ptrtonode position;
list creatlist(void);
void insert(int i,position p,list l);
position findprevious(list l,int i);
void delete(int i,position p);
void printlist(list l);
int isempty(list l);
int islast(list l,position p);
#endif
#include
#include
typedef struct node *ptrtonode;
typedef ptrtonode list;
typedef ptrtonode position;
struct node;
list creatlist(void)
l->next=null;
return l;
}void insert(int i,position p,list l)
tmp->element=i;
tmp->next=p->next;
p->next=tmp;
}int isempty(list l)
position findprevious(list l,int i)
int islast(list l,position p)
void delete(int i,list l)
}void printlist(list l)
}/*3.2 列印鍊錶l中由鍊錶p指定位置的元素printlots(list l,list p)*/
void printlots(list l,list p)
printf("%d",ptrl->element);
ptrp=ptrp->next;}}
/*3.4 l1 l2 兩個有序鍊錶的交集
1. 建立新鍊錶(結果列表)儲存所得交集;
2. p指標指向結果列表頭,p1,p2分別指向l1 l2頭節點下一節點;
判斷兩個是否都為空,都為空返回null;
建立迴圈,迴圈結束條件:兩個鍊錶中有乙個遍歷完畢。while(p1!=null&&p2!=null)
比較p1 p2指標所指節點的值;1)所指的值小的指標向後移動,其他不變; if(p1->elementelement) p1=p1->next;
2)相等時則向結果列表新增節點儲存這個值,
兩個指標p1,p2都向後移動,存結果的指標也向後移動。繼續進行迴圈比較
insert(p1->element,p,resultlist);
p1=p1->next;
p2=p2->next;
p=p->next;
3. 返回結果列表
*/list intersection(list l1,list l2)
}return resultlist;
}/*3.4 l1 l2 兩個有序鍊錶的並集
1. 建立新鍊錶(結果列表)儲存所得並集;
2. p指標指向結果列表頭,p1,p2分別指向l1 l2頭節點下一節點;
判斷兩個是否都為空,都為空返回null;
建立迴圈,迴圈結束條件:兩個鍊錶中有乙個遍歷完畢。while(p1!=null&&p2!=null)
比較p1 p2指標所指節點的值;1)所指的值小的指標向後移動,向結果列表新增節點儲存這個值,結果的指標也向後移動,指向較大值的指標不變;
2)相等時則向結果列表新增節點儲存這個值,兩個指標p1,p2都向後移動,存結果的指標也向後移動。繼續進行迴圈比較
3. 判斷兩個鍊錶是否都遍歷完畢,沒有遍歷完畢的,將剩下的值放到結過鍊錶中。
*/list union(list l1,list l2)
else if(p1->element>p2->element)
else
}if (p1!=null)
}else if(p2!=null)
}return resultlist;
}void main()
資料結構與演算法分析
資料結構與演算法分析可以稱得上是程式設計師必須修煉的內功心法。資料的儲存結構 資料元素在計算機中的儲存方式 資料的操作集合 對一種資料型別的資料所有操作,例如對資料的增刪改查等等!演算法分析主要分析 下面是一些常用資料結構 一 線性表 1.陣列實現 2.鍊錶 二 棧與佇列 三 樹與二叉樹 1.樹2....
資料結構與演算法分析
資料結構 大量資料的組織方法 演算法分析 演算法執行時間的估算。涉及到計算效率。設想,如果能把時間限制從16年減至不到1秒,不很神奇嗎?在很多問題中,乙個重要的觀念是 寫出乙個可以工作的程式並不夠。如果這個程式在巨大的資料集上執行,執行時間就成了重要的 問題。演算法,是為求解乙個問題需要遵循的 被清...
資料結構與演算法分析 note
1 explicit建構函式是用來防止隱式轉換的。請看下面的 class test1 普通建構函式 private int num class test2 explicit 顯式 建構函式 private int num int main test1的建構函式帶乙個int型的引數,23行會隱式轉換成...