#includeusing namespace std;
typedef struct node
lnode,*linklist;
//建立空單鏈表
linklist creat_linklist(void)
return h;
}//銷毀單鏈表
void destroy_linklist(linklist *h)
free(p);
*h=null;
}//求表長(迴圈鍊錶求表長)
int length_linklist(linklist h)
return count;
}//查詢操作
//按序號查詢
linklist locate_linklist_pos(linklist h,int i)
if(j!=i||!p)
return p;
}//按值查詢
linklist locate_linklist_value(linklist h,int x)
return p;
}//插入
int insert_linklist(linklist h,int x)
if(h->next==null)//當鍊表為空時,插入第乙個元素
else //在頭指標和最後乙個元素之間插入
q->next=p;
p->next=h->next;
} return 1;
}//刪除
int del_linklist(linklist h,int i)
p=locate_linklist_pos(h,i-1);
if(p==null||p->next==null)
q=p->next;
p->next=q->next;
free(q);
return 1;
}int josephus_linklist(linklist josephus_link,int s,int m)
p=josephus_link;
for(i=0;inext; //用p作為第s個結點指標(開始結點)
cout<<"輸出約瑟夫序列:"coutpre->next=p->next;
free(p);
p=pre->next;//從下乙個開始迴圈
} coutfree(p);
return 1;
}int main()
for(i=0;i<12;i++)
cout/cout/josephus_linklist(h,1,2);
return 0;
}
1 1單鏈表
1.1單鏈表 9.28 ifndef list h struct node typedef struct node ptrtonode typedef ptrtonode position typedef ptrtonode list list makeempty list l int isempt...
11 判斷單鏈表是否有環
判斷單鏈表是否有環 這裡也是用到兩個指標,如果乙個鍊錶有環,那麼用乙個指標去遍歷,是永遠走不到頭的。因此,我們用兩個指標去遍歷 first指標每次走一步,second指標每次走兩步,如果first指標和second指標相遇,說明有環。時間複雜度為o n 方法 方法 檢測單鏈表是否有環 public ...
單鏈表(合併單鏈表)
單鏈表遍歷 單鏈表遍歷是從單鏈表頭指標head開始訪問,沿著next指標所指示的方向依次訪問每乙個結點,且每個結點只能訪問依次,直到最後乙個結點為止。遍歷時注意,不要改變head指標的指向。因此一般設定另外的乙個指標變數如p,p從head開始依次訪問乙個結點,直到鍊錶結束,此時p null,完成依次...