1. 鍊錶的資料結構
.typedef structnode;
2. 鍊錶的建立
定義鍊錶、申請空間、處理頭指標和尾指標。
3. 鍊錶的插入在q的後面插入p
p->next = q->next; q->next =p;
4. 鍊錶的刪除,刪除q後乙個結點.
p =q->next; q->next = q->next->next; free(p);
5. 鍊錶的應用1---合併。見sm1209、sm1208、多項式的運算等。
6. 鍊錶的應用2—佇列(廣搜)。
smu1077中馬的走法。即從(begin_x,begin_y)走到(end_x,end_y)最少要用幾步
步驟與思路:
1) 輸入(begin_x,begin_y) (end_x,end_y)
對標記陣列初始化flag[9][9]=;//表示點(x,y)是否訪問過.
定義八個方向;
2) 建立鍊錶的結點結構和佇列結構
typedef struct nodelinkqueuenode;//每個點的節點表示
typedef structlinkqueue; //佇列
3) 初始化佇列,並把(begin_x,begin_y)作為第乙個節點.
q = (linkqueue *)malloc(sizeof(linkqueue ));//申請佇列空間
//產生節點
newnode = (linkqueuenode *)malloc(sizeof(linkqueuenode));
newnode->x = begin_x; newnode->y = begin_y; newnode->step = 0;
newnode->next = null;
//建隊,隊首和隊尾指向同乙個節點
q->front = newnode; q->rear = q->front ;
4) 如果隊首的點與不一致,就進行標記隊首的點,出隊,把馬走的八個方向的點入隊.
入隊與出隊處理:
while( q->front !=null)
}p = q->front ;q->front = q->front->next; free(p); //出隊
}else
完整**如下:
#include #include #include typedef struct nodelinkqueuenode;
typedef structlinkqueue;
int main();//8個方向
while(scanf("%d%d%d%d", &begin_x,&begin_y,&end_x,&end_y)!=eof)
}p = q->front ;q->front = q->front->next; free(p);
}else
}printf("%d\n",q->front->step );
}return 0;
}
指導學習 指導
在過去的幾周中,此部落格有點安靜。在當今世界上發生的所有事情面前,沒有意識到共享css技巧的合適時機,而沒有承認在喬治 弗洛伊德 george floyd 被殺之後人們在街頭 的真正鬥爭。黑人實際上是在爭取種族主義世界中存在的權利。毫無疑問,白人在科技領域的代表人數過多。在我所在的公司,我們開始就如...
鍊錶的學習
鍊錶的每乙個元素由乙個儲存元素本身的節點和乙個指向下乙個元素的引用。1.靈活的記憶體動態管理,記憶體空間不是必須連續的 2.不必在建立時就確認大小,大小可以無限的延伸下去 3.插入和刪除資料的時間複雜度低,只有o 1 訪問查詢某個節點時,需要從頭開始進行訪問 function linkedlist ...
鍊錶的學習
在leetcode刷題過程中發現鍊錶的題目難起來是真的難,通過幾個練習題目之後發現做關於鍊錶的題目主要兩種方式 1 遞迴 2 迭代 例題 合併兩個有序鍊錶 leetcode 21 使用遞迴的話需要清楚,在何處開始遞迴,遞迴的截止條件是什麼,或者邊界條件是什麼。code 1 class solutio...