單向鍊錶例題

2021-07-26 17:50:36 字數 2508 閱讀 2006



#include

#include

struct node        //定義結點的結構體

;typedef struct node node;    //將struct node簡單定義為node

typedef struct node *link;    //將stcuct node型別定義為*link

void create_link(link * head)   //建立頭指標,並定義為空指標

void insert_node_head(link * head, link new_node) //插入新的結點(頭插)(插哪,哪個結點)

void insert_node_tail (link * head, link new_node)   //尾插

else

p -> next = new_node;

new_node -> next = null;}}

void display_link (link head)        //輸出

while(p != null)

}void release_link (link * head)             //釋放鍊錶

}void delete_node (link * head, int number)      //刪除其中乙個結點

else

else

if(p == null)

else if( p->next != null)

else }}

}int number_link (link head)         //計算鍊錶長度並返回

return num;

link find_link (link  head, int n)        //查詢對應學號所在結點內容

return p;

}void flashback_link (link *head)       //倒敘輸出鍊錶

else if(p2 -> next == null)

else

p3 -> next = p2;

(*head) -> next = null;

*head = p3;}}

void enter_link (link *head, link enter_node,int number)   //插入新的結點

else if(p -> num == number)

else

if(p != null)

(enter_node) -> next = (p -> next);

p -> next = enter_node;

}else

p -> next = enter_node;

enter_node -> next = null;}}

int main()

new_node -> num = i + 1;  //賦值

scanf("%s", new_node -> name);

//      insert_node_head(&head, new_node);

insert_node_tail(&head, new_node);

}// display_link(head); //輸出

/*num = number_link(head);               //返回結點數

printf("number = %d\n", num);

printf("please input the num, find the name:\n");

scanf("%d",&n);

printf("%s\n",find_link(head, n) -> name);           // 輸出查詢號對應的名字

printf("\n");

printf("please input the number of delete:\n");

scanf("%d",&number);

delete_node (&head, number);       //刪除其中乙個結點

flashback_link(&head);      //倒敘輸出

*/ enter_node = (link)malloc(sizeof(node));

enter_node -> num = i + 1;

printf("please input the name:\n");

scanf("%s",enter_node -> name);

printf("please input the number of enter:\n");

scanf("%d",&number);

enter_link(&head, enter_node, number);    //在已經輸入的結點裡再插入乙個新的結點

display_link(head); //輸出

release_link (&head); //釋放

display_link(head);

return 0;

}

鍊錶 反轉單向鍊錶

思路 從第二個元素開始。1 刪除當前元素。2 把當前元素放到頭結點位置。其中需要宣告3個變數 headnode 頭結點 prenode 前乙個結點 currentnode 當前結點 具體步驟如圖所示 實現 反轉單鏈表方法實現類 created by liujinjin on 17 1 19.publ...

鍊錶1 單向鍊錶

鍊錶中最簡單的一種是單向鍊錶,它包含兩個域,乙個資料域和乙個指標域,指標域指向鍊錶中的下乙個節點,最後乙個節點的指標域指向乙個空值 鍊錶最基本的結構是在每個節點儲存資料和到下乙個節點的位址,在最後乙個節點儲存乙個特殊的結束標記,另外在乙個固定的位置儲存指向第乙個節點的指標,有的時候也會同時儲存指向最...

鍊錶 單向鍊錶

討論單鏈表之前,我們先來討論下面這個問題。順序表存在的一些問題 中間 頭部的插入刪除,時間複雜度為o n 增容需要申請新空間,拷貝資料,釋放舊空間。會有不小的消耗。增容一般是呈2倍的增長,勢必會有一定的空間浪費。例如當前容量為100,滿了以後增容到200,我們再繼續插入了5個資料,後面沒有資料插入了...