作為一種資料結構,鍊錶以其方便的增刪查改功能,實現了無數經典有用的程式。在之前的帖子裡,我構建鍊錶的方式是建立乙個不儲存資料的head節點,然後通過一邊輸入資料一邊建立結點的方式構建整個鍊錶。
與之前不同的是,這裡建立的是包含資料的頭結點head:
下面是**,包含建立部分,輸出部分,刪除部分,和插入部分。
struct node
;int n = 0; // 結點數
//**********===node_creat**********====//
node *node_creat()
scanf("%d",&p1 -> data);
while(p1 -> data >= 0)
else
p2 = p1;
p1 = (node *)malloc(sizeof(node));
if(p1 == null)
scanf("%d",&p1 -> data);
}p1 = null;
p2 -> next = null;
return head;
}//**********==node_print**********====//
void node_print(node *head)
else
printf("\n");
}}//**********====node_delete()***************//
void node_delete(node *head,int num)
if(num > n) // 結點不存在
n--; // 結點數-1
int i;
for(i = 1; i < num; i++)
if(p1 == head) // 頭節點 即第乙個
else
node_print(head);
}//**********==node_insert()**********==//
void node_insert(node* head,int num,int i_data)
newnode -> data = i_data;
newnode -> next = null;
node *p1,*p2;
p1 = head;
for(int i = 1 ;i < num; i++)
p2 -> next = newnode;
newnode -> next = p1;
n++; // 結點數+1
node_print(head);
}
樣例:我這裡採用的方法是 改變兩個結點間next指標的指向,原結點next指標指向下乙個結點,反轉後指向前乙個結點。node* node_reverse(node* head)
return preversedhead;//返回反轉煉表頭指標。
}
大概的乙個流程圖(反轉第乙個結點)注:紅色箭頭代表pprev,pnext和pnow的移動,藍色代表next指標的指向。for迴圈的另一種方式
語法 for expr1 expr2 expr3 do done 解釋 expr1 控制變數的初始值 expr2 判定什麼時候退出迴圈 expr3 修正這個變數的值 範例 計算1到100之間的數值的和 這裡面 有倆種方式 最普通的是我們想到的是 1到100之間的數列,另一種是今天的小知識點的運用 這...
另一種尊重
上中學的時候,有一節課印象非常深刻。老師問我們如果無意闖入乙個房間,發現房間裡有一位女士正在洗澡,這時應該怎麼辦?有同學回答就當什麼也沒看見,退出房間。還有同學回答 說聲對不起!女士。然後退出去。老師笑了笑說,還有更好的答案,那就是 對不起,先生!有一對結婚多年的夫妻,有一次出差在外的妻子有一件急事...
另一種勝利
另一種勝利 written by allen lee 剛才我的扣殺,出界了5.3厘公尺。雖然很可惜,但還是出界了,請確認下吧。幹 真是的,那些任性的傢伙!但是,到最後還只顧自己網球原則的正直笨蛋,和一定要用迴旋蛇標打中單人區的笨蛋,給我們看了場好比賽啊。龍崎 海棠和幹他們雖然輸了這場比賽,但他們堅持...