1樓:雍赩
你哪個學校的啊,我們今天也在做這個,呵呵……
約瑟夫環問題:的實現除了單迴圈連結串列和陣列外還有什麼好的資料結構方式解決嗎 ??
2樓:匿名使用者
這個問題很奇怪啊。約瑟夫環問題最直接的解決方式就是個迴圈連結串列,不停的刪除連結串列中的元素。如果覺得刪除操作太麻煩,用個陣列,然後標記陣列裡面被刪除的元素也是一種選擇。
為什麼還要用其他的資料結構?
約瑟夫環問題 與實際結果多1 程式錯誤 幫忙看看
3樓:網友
i=0;k=0;m=0;
i=n-1;k=0;m=0;
while(m3,移了3個,初始化時,i指向的是第1個,後移2個就彈出,以後每一次困迅彈出後,i指向的是當前汪模此被彈出的,也就是往後移3次,因為二者差異碼州,所以在前面i往前移乙個,構造所有的條件統一!
if(i==(n-1)) i=0;
else i++;
if(*(p+i)!=0) k++;
越來越覺得自已說得很含糊。
4樓:網友
約瑟夫環不是要兩個引數麼?(總辯塌肢攜世人數和報數值)
題目都沒寫清楚,又沒衫和有一句註釋,這種問題怎麼找錯啊。
求c語言用迴圈連結串列編寫約瑟夫環**(速度求解)!!!
5樓:仙訪戚可昕
類似差不多的。
#include
#include
#define
ssizeof(struct
node)struct
nodetypedef
struct
nodenode;
nodecreatelinklist(int
n)p->next=head;
使連結串列尾指向連結串列頭。
形成迴圈連結串列*/
return
head;void
printlinklist(node
p,intn)printf("所有玩家的資訊列表:");
for(i=1;i<=n;i++)
printf("%d,p->num);
p=p->next;
printf("");
voidjoseph(node
p,intn,int
m)q=p->next;
p->next
q->next;
printf("%d,q->num);
free(q);
printf("最後剩餘的是第%d號。",p->num);
p->next=null;
voidmain()
6樓:網友
#include
#define size 100 /* 輸入人數的上限 */
void main()
printf( "請輸入各個人的資訊(整數): n" );
for( i = 0; i < arraylen; i++
printf( "你輸入的資料的順序為: " );
for( i = 0; i < arraylen - 1; i++
printf( " %d ==>", person[i] )
printf( "%d ", person[arraylen - 1] )
printf( "你打算從第幾個人開始? 請輸入開始號: " );
scanf( "%d", &start );
printf( "" );
start = start - 1;
printf( "請輸入相鄰兩出列人之間的間隔: " );
scanf( "%d", &overnum );
printf( "" );
total = arraylen;
printf( "程式執行後,出列人的順序為:" );
for( i = 0; i < total; i++ /* 要列印total個人的情況,故做total次 */
printf( "" );
連結串列與陣列的儲存結構有什麼不同,連結串列的資料讀寫和陣列有呵不同啊?
7樓:網友
這個問題很奇怪啊。約瑟洞巧夫環問題最直接的解旁顫芹決方式就是個迴圈連結串列,不停的刪除連結串列中的元素。如果覺得刪除操作太麻煩,用個陣列,然後標記陣列裡面被刪除的元素也是運畢一種選擇。
為什麼還要用其他的資料結構?
約瑟夫環運用了哪些c語言知識點
8樓:風若遠去何人留
約瑟夫環實現方法有很多種。
陣列 連結串列 雙向連結串列等等。
根據實現方式不同, 用到知識點也不一樣。
最基礎的 就是陣列, 賦值, 迴圈, 判斷, 還有基礎數值運算。
(約瑟夫環)這是使用單連結串列做的約瑟夫環。如何改為單迴圈連結串列????????
9樓:網友
看看行不?沒有呼叫函式:
#include//這是改為單迴圈連結串列!!!
#include
#include
typedef int elemtype;
typedef struct singlenodeelemtype data;
struct singlenode *next;
sll,*linklist;
int main()
sll *head ,*use,*temp;
int i,n,m,k,a=0;
printf("請輸入總人數n:");
scanf("%d",&n);
printf("從第m個人開始數起,請輸入m:");
scanf("%d",&m);
printf("數到第k個人,該人出列,請輸入k:");
scanf("%d",&k);
head = use = (sll *)malloc(sizeof(sll));//建立連結串列,形成連結串列頭。
head->data = 1;
for (i = 2; i <= n; i++)//形成其餘的n-1個。
use->next = (sll *)malloc(sizeof(sll));
use = use->next;
use->data = i;//第i個置編號iuse->next = head;//末首相連,形成環。
printf("人員序號為:"); //輸出人員的序號。
temp=head;
for(i=0;idata);
temp=temp->next;
printf("");
for(i=0;inext;
printf("人員出列順序為:");
while (n) {
for (i = 1; i < k; i++)//掠過k-1個。
use = use->next;
temp = use->next;//temp指向第k個。
use->next = temp->next;//第k個從環中脫鉤。
printf("%d ", temp->data);
free(temp);//釋放第k個表元佔用的空間。
n--;printf("");
return 0;
資本迴圈的三種形式及其職能是什麼
你是不是要問 產業資本迴圈的三種職能形式啊?答案是 貨幣資本,生產資本,商品資本。三種形式 貨幣資本 生產資本 商品資本 分別對應的職能 貨幣資本的職能是購買生產要素,為生產剩餘價值準備條件 生產資本的職能是促進僱傭勞動力和生產資料相結合,生產出包括著剩餘價值的新商品 商品資本的職能是 商品,實現預...
用三種不同的c語言迴圈語句,計算1 100的和
1 用for迴圈 include stdio.h int main int argc,char argv 2 用do while迴圈內 include stdio.h int main int argc,char argv 3 用while迴圈 include stdio.h int main in...
重心位置的判定,確定重心的三種方法
只能大略的判斷出 憑生活經驗。做試卷的時候 老師不會苛刻地讓你準確畫出重心的位置。只要畫得不要太離譜就是了 一般都在物體較重部分的中心 如不倒翁 就畫在填在裡面重物的中心。如果幾部分重量相差不大,則就是在中心附近 同向平行力的合成法 各分力對合力作用點的合力矩為,則合力作用點為重心 割補法 把幾何形...