C 程式設計練習7 鍊錶的操作 複習

2021-10-01 11:49:10 字數 1654 閱讀 7864

本人c語言現已全部學習完啦

本篇章節為自由發揮(我也不想,但真的有點難度)

因為鍊錶的內容涉及到一點資料結構(單鏈)。且下學期的課程也涉及到資料結構,所有老師並沒有太過於嚴的要求我們,安慰我們說期末考試的題也涉及的很少。可現在不會的下學期都是要還的呀。所以不能鬆懈!!!

1,建立乙個鍊錶並輸出。

我的答案如下:

#include #include #define len sizeof(struct student)

#define null 0

struct student *creat();

void print(struct student *head);

typedef struct student

xiao;

int n;

main()

struct student *creat()

putchar('\n');

q2->next=null;

return head;

}void print(struct student *head)

while(p);

}

鍊錶的建立我們需要三個結構體指標,乙個是頭指標,乙個是尾指標,乙個創指標。對應上面的head,q2,q1。首先乙個新的節點,需要所有人都指向它,第二個節點時,我們的頭指標就可以指著第乙個節點不用動了,而尾指標和創指標就繼續指著第二個節點,等第三個節點由創指標創立後,就可判斷我們是否需要這麼多節點了,需要的話,就可使尾指標指向三節點,再由創指標創立新的節點…當我們的節點夠之後就可使尾指標指向null。而同時創指標也被拋棄了。所以總的來說創指標就是乙個開路先鋒,而尾指標就是記錄領地的人員。頭指標就是佔守首都的人員。如此如此,乙個鍊錶就建立好啦。

2,刪除乙個節點。

我的答案如下:

struct student *del(struct student *head,int a)

if(a==q1->num)

else

printf("there are no point which you want \n");

return head;

}

刪除乙個結點,我們需要兩個結構體指標,乙個用來測試是否為自己想刪除的值,乙個用來記錄上乙個節點的位址。因為假設有3個結點,p1.p2.p3。如果我們要刪除p2,則只需要將p2->next=p1->next。這樣我們的p2兄弟就被拋棄了。所以,我們需要兩個指標,乙個當p1,乙個當p2。就像上面的子函式的 *q1.*q2。

3,插入乙個節點。

我的答案如下:

struct student *insert(struct student *head,struct student *one)

if(q0->num<=q1->num)

else

return head;

}

插入乙個節點,我們需要事先將此節點建立出來,並使子函式的q0指向它。插入乙個函式,我們是需要一定的理由的,比如序號的大小,如果沒有順序的插入,那也沒有任何的意義,是吧。這裡我們就是以num的大小順序作為依據,來插入我們的新節點。我們的試探指標q1就用來確定q0應放入的位置了,同時q2指標也緊隨q1(原理和刪除節點類似)。當我們找到了q0的位置後,只需要將 q2->next=q0同時q0->next=q1,那麼一條鍊錶就建立好了。

鍊錶程式設計練習

深刻感覺,基礎很重要,閒暇時間,做簡單鍊錶程式設計練習。ifndef list h define list h include include typedef struct linknodelist linknode linknode linklistcreate const intn linkno...

鍊錶操作練習

本小題請務必重視,綜合了各種鍊錶操作 各種考試考題 可以做成乙個比較完整的工程,請設計測試程式進行測試,務必自己編寫 1 針對帶表頭結點的單鏈表,試編寫下列函式。1 建立函式create 根據一維陣列a n 建立乙個單鏈表,使單鏈表中各元素的次序與a n 中各元素的次序相同,要求該程式的時間複雜性為...

鍊錶操作練習

這裡來總結一下覺得比較有思想的題啪 160.相交鍊錶 這裡的想法是a b與b a遍歷的時間是一樣的,就是說從a鍊錶開始遍歷接著從b鍊錶開始遍歷與先遍歷b在遍歷a同時結束。public class solution pa pa.next pb pb.next return ans 206.反轉鍊錶 這...