輸入引數
n n
為正整數,如輸入n=
5' role="presentation" style="position: relative;">n=5
n=5,則按行列印如下的數字:
這個問題是將數字1…
n21 …n
2按照一圈一圈的方式儲存好,再按照行的方式對其進行列印。
最簡單的方法是利用陣列:
這個方法比較簡單,就不給出**了。
有人覺得上述的問題沒什麼難度,現在對問題進行公升級。
使用鍊錶的方式,不得使用陣列。最終按行列印出來。(純煉表的操作)由於本問題並不難,只是有些麻煩,利用這個問題,可以補習c語言中的指標的操作。方法有很多,在這裡我給出我自己的方法,不見得是最簡單的方法,若有簡單的方法大家可以試試,我的方法主要分為以下幾步:
下面是我的結果截圖:
以下是我實現的程式**,僅供參考:
#include
#include
typedef struct node node;
struct node;
node* setmatrix(int start, int n)else
//p_left_down-->p_left_up
//p_left_down-->p_right_down
node* p_2 = p_left_down;
node* p_3 = p_left_down;
for (i =
0; i < (n-
2); i++)
//p_right_up-->p_right_down
node* p_4 = p_right_up;
node* r = p_left_up;
for (i =
0; i < (n-
2); i++)
}return p_left_up;
}node* setall(int start, int n)else
r_2->nextrightnode = r->nextrightnode;
r->nextrightnode->nextleftnode = r_2;
r->nextrightnode = p_1;
p_1->nextleftnode = r;
p_down = p_down->nextdownnode;
p_1 = p_1->nextdownnode;
}n = n -
2; p_tmp = f;}}
return p;
}void printmatrix(node* p)
printf("\n");
q = q->nextdownnode;
}}int main(int argc, char** argv)
int n = atoi(argv[1]
); //node* p = setmatrix(25, n);
node* p = setall(1, n);
printmatrix(p);
return 0;
}
Python資料結構之旋轉鍊錶
題目描述 給定乙個鍊錶,旋轉鍊錶,使得每個節點向右移動k個位置,其中k是乙個非負數 樣例 給出鍊錶1 2 3 4 5 null和k 2 返回4 5 1 2 3 null 首先,觀察一下這個題目要達到的目的,其實,換一種說法,可以這樣來描述 給出乙個k值,將鍊錶從倒數第k個節點處起之後的部分移動到鍊錶...
資料結構和演算法 雙向鍊錶
初始化 指標域置為空 null 資料域可用可不用 前插法 插入節點插在頭節點之後 為前插法 插入節點的next 頭節點的next 插入節點的prev 頭節點 頭節點的next 插入節點 判斷是否存在下乙個節點 如果 頭節點的next null 說明存在,就需要把下乙個節點的prev指向插入節點 如果...
資料結構和演算法 8 鍊錶
8.1.陣列存在的問題在處理列表的時候陣列是常用的資料結構。陣列可以對所儲存的資料項提供快速地訪問訪問,而且它很易於進行迴圈遍歷操作。當然,陣列已經是語言的一部分了,使用者不需要使用額外的記憶體,也不需要花費因使用使用者自定義的資料結構所需的處理時間。然而正如所見,陣列不是一種最佳的資料結構。在無序...