<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        單向鏈表應用函數

        作者:劉蕊飛   來源:本站原創   點擊數:  更新時間:2014年03月02日   【字體:

         注意:創建節點,一定要銷毀節點。

         

         

        #include <stdio.h>

         

        #include <stdlib.h>

         

        typedef struct node{

         

               intdata;

         

               structnode *next;

         

        } node_t;

         

        // 創建節點函數

         

        void *create(int size);

         

        // 初始化鏈表

         

        int init(node_t *head);

         

        // 頭插入法

         

        int insert_head(node_t *head,node_t *pn);

         

        // 尾插入法

         

        int insert_end(node_t *head,node_t *pn);

         

        // 打印所有節點內容

         

        void print(node_t *head);

         

        // 銷毀所有節點

         

        void destroy(node_t *head);

         

        // 應用函數

         

        // 創建長度為 len 的鏈表并輸入內容

         

        int create_link(node_t *head,int len);

         

         

         

        int main()

         

        {

         

               node_t*head = NULL;

         

               intlen = 0;

         

         

         

               if(init(head= create(sizeof(node_t))) != 0){

         

                      printf("初始化鏈表失敗\n");

         

                      exit(0);

         

               }

         

               printf("長度:");

         

               scanf("%d",&len);

         

               create_link(head,len);

         

               print(head);

         

         

         

               destroy(head);

         

               free(head);

         

               head= NULL;

         

         

         

               return0;

         

        }

         

        // 創建節點函數

         

        // 成功返回新節點首地址,失敗返回 NULL

         

        void *create(int size)

         

        {

         

               returncalloc(1,size);

         

        }

         

        // 初始化鏈表

         

        // 0-成功 1-失敗

         

        int init(node_t *head)

         

        {

         

               if(NULL== head)

         

                      return1;

         

               head->next= NULL;

         

         

         

               return0;

         

        }

         

        // 頭插入法

         

        // 0-成功 1-失敗

         

        int insert_head(node_t *head,node_t *pn)

         

        {

         

               if(NULL== pn)

         

                      return1;

         

               pn->next= head->next;

         

               head->next= pn;

         

         

         

               return0;

         

        }

         

        // 尾插入法

         

        // 0-成功 1-失敗

         

        int insert_end(node_t *head,node_t *pn)

         

        {

         

               node_t*tail = NULL;

         

         

         

               if(NULL== pn)

         

                      return1;

         

               tail= head;

         

               while(tail->next!= NULL)

         

                      tail= tail->next;

         

               tail->next= pn;

         

               pn->next= NULL;

         

         

         

               return0;

         

        }

         

        // 打印所有節點內容

         

        void print(node_t *head)

         

        {

         

               node_t*cur = NULL;

         

         

         

               cur= head->next;

         

               while(cur!= NULL){

         

                      printf("%d",cur->data);

         

                      cur= cur->next;

         

               }

         

               printf("\n");

         

        }

         

        // 銷毀所有節點

         

        void destroy(node_t *head)

         

        {

         

               node_t*del =NULL,*n_node = NULL;

         

         

         

               del = head->next;

         

               while(del != NULL){

         

                      n_node= del->next;

         

                      free(del);

         

                      del = n_node;

         

               }

         

               init(head);

         

        }

         

        // 應用函數

         

        // 創建長度為 len 的鏈表并輸入內容

         

        // 返回創建的節點數

         

        int create_link(node_t *head,int len)

         

        {

         

               inti = 0;

         

               node_t*n_node = NULL;

         

         

         

               printf("輸入 %d 個數:\n",len);

         

               for(i= 0;i < len;i++){

         

                      n_node= create(sizeof(node_t));//創建新節點

         

                      if(NULL== n_node)

         

                             returni;

         

                      scanf("%d",&n_node->data); // 輸入數據

         

                      insert_end(head,n_node);      // 插入鏈表

         

               }

         

         

         

               returni;

         

        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮