<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      二 線性表鏈式存儲之企業鏈表

      線性表鏈式存儲之企業鏈表

      一丶企業鏈表介紹

        不受業務結構而限制,在我們用的數據類型發生改變時并不需要去改變底層的鏈表結構.

      二丶企業鏈表實現

      enterpriselist.h

       1 #pragma once
       2 #include <stdio.h>
       3 #include <stdlib.h>
       4 
       5 //小結點
       6 typedef struct LinkNode
       7 {
       8     LinkNode* next;
       9 }LinkNode;
      10 
      11 //鏈表結構體
      12 typedef struct LinkList
      13 {
      14     LinkNode head;
      15     int size;
      16 }LinkList;
      17 
      18 //遍歷函數指針
      19 typedef void(*PRINTNODE)(LinkNode* data);
      20 
      21 //比較函數指針
      22 typedef int(*COMPARENODE)(LinkNode*, LinkNode*);
      23 
      24 //鏈表初始化
      25 LinkList* init_LinkList();
      26 
      27 //根據位置插入數據
      28 void insert_LinkList(LinkList* list, int pos, LinkNode* data);
      29 
      30 //刪除
      31 void remove_LinkList(LinkList* list, int pos);
      32 
      33 //查找
      34 int find_LinkList(LinkList* list, LinkNode *data, COMPARENODE compare);
      35 
      36 //返回鏈表大小
      37 int size_LinkList(LinkList* list);
      38 
      39 //遍歷
      40 void print_LinkList(LinkList* list, PRINTNODE myprint);
      41 
      42 //釋放鏈表內存
      43 void free_LinkList(LinkList* list);

      enterpriselist.c

       1 #include "enterpriselist.h"
       2 
       3 //鏈表初始化
       4 LinkList* init_LinkList()
       5 {
       6     LinkList* list = (LinkList*)malloc(sizeof(LinkList*));
       7     list->head.next = NULL;
       8     list->size = 0;
       9     return list;
      10 }
      11 
      12 //根據位置插入數據
      13 void insert_LinkList(LinkList* list, int pos, LinkNode* data)
      14 {
      15     if (list == NULL)
      16         return;
      17     if (data == NULL)
      18         return;
      19     if (pos <0 || pos>list->size)
      20         pos = list->size;
      21     //查找插入位置
      22     LinkNode* pCurrent = &(list->head);
      23     for (int i = 0; i < pos; i++)
      24     {
      25         pCurrent = pCurrent->next;
      26     }
      27     //插入新節點
      28     data->next = pCurrent->next;
      29     pCurrent->next = data;
      30 
      31     list->size++;
      32 }
      33 
      34 
      35 //刪除
      36 void remove_LinkList(LinkList* list, int pos)
      37 {
      38     if (list == NULL)
      39         return;
      40     if (pos < 0 || pos >= list->size)
      41         return;
      42     LinkNode* pCurrent = &(list->head);
      43     for (int i = 0; i < pos; i++)
      44     {
      45         pCurrent = pCurrent->next;
      46     }
      47     pCurrent->next = pCurrent->next->next;
      48     list->size--;
      49 }
      50 
      51 //查找
      52 int find_LinkList(LinkList* list, LinkNode *data, COMPARENODE compare)
      53 {
      54     if (list == NULL)
      55         return -1;
      56     if (data == NULL)
      57         return -1;
      58     LinkNode* pCurrent = list->head.next;
      59     int index = 0;
      60     int flag = -1;
      61     while (pCurrent != NULL)
      62     {
      63         if (compare(pCurrent, data) == 0)
      64         {
      65             flag = index;
      66             break;
      67         }
      68         pCurrent = pCurrent->next;
      69         index++;
      70     }
      71     return flag;
      72 }
      73 
      74 //返回鏈表大小
      75 int size_LinkList(LinkList* list)
      76 {
      77     return list->size;
      78 }
      79 
      80 //遍歷
      81 void print_LinkList(LinkList* list, PRINTNODE print)
      82 {
      83     if (list == NULL)
      84         return;
      85     LinkNode* pCurrent = list->head.next;
      86     while (pCurrent)
      87     {
      88         print(pCurrent);
      89         pCurrent = pCurrent->next;
      90     }
      91 }
      92 
      93 //釋放鏈表內存
      94 void free_LinkList(LinkList* list)
      95 {
      96     if (list != NULL)
      97         return;
      98     free(list);
      99 }

      main.c

       1 #define _CRT_SECURE_NO_WARNINGS
       2 #include "enterpriselist.h"
       3 #include <string>
       4 typedef struct Person
       5 {
       6     LinkNode node;//只能是第一行,相當于是掛鉤
       7     char name[64];
       8     int age;
       9 }Person;
      10 
      11 void MyPrint(LinkNode* data)
      12 {
      13     Person *p = (Person*)data;
      14     printf("姓名:%s,年齡:%d\n", p->name, p->age);
      15 }
      16 
      17 int MyCompare(LinkNode* node1, LinkNode* node2)
      18 {
      19     Person* p1 = (Person*)node1;
      20     Person* p2 = (Person*)node2;
      21     if (strcmp(p1->name, p2->name) == 0 && p1->age == p2->age)
      22     {
      23         return 0;
      24     }
      25     return -1;
      26 }
      27 
      28 int main()
      29 {
      30     LinkList* list = init_LinkList();
      31     Person p1, p2, p3, p4, p5;
      32     strcpy(p1.name, "張三");
      33     strcpy(p2.name, "李四");
      34     strcpy(p3.name, "王五");
      35     strcpy(p4.name, "陳六");
      36     strcpy(p5.name, "劉貝");
      37 
      38     p1.age = 20;
      39     p2.age = 22;
      40     p3.age = 19;
      41     p4.age = 25;
      42     p5.age = 27;
      43     insert_LinkList(list, 0, (LinkNode*)&p1);
      44     insert_LinkList(list, 0, (LinkNode*)&p2);
      45     insert_LinkList(list, 0
      
      
      
      
      主站蜘蛛池模板:
      色婷婷综合久久久久中文字幕
      |
      久久www免费人成一看片|
      自拍偷自拍亚洲精品熟妇人|
      一区二区三区国产综合在线|
      伊人成人在线视频免费|
      国产精品黄色精品黄色大片
      |
      国产亚洲综合区成人国产|
      欧美老少配性行为|
      大尺度国产一区二区视频|
      清水县|
      亚洲人精品午夜射精日韩|
      色香欲天天影视综合网|
      亚洲日韩久热中文字幕|
      97色伦97色伦国产|
      虎白女粉嫩尤物福利视频|
      寿光市|
      国产精品成人网址在线观看|
      国产精品久久久久久爽爽爽|
      九九热免费在线观看视频|
      国产成人精彩在线视频|
      换着玩人妻中文字幕|
      亚洲色大成网站WWW永久麻豆|
      新巴尔虎右旗|
      无码人妻久久一区二区三区app|
      无码囯产精品一区二区免费|
      男女做aj视频免费的网站|
      老司机精品影院一区二区三区|
      国产精品18久久久久久麻辣|
      中文字幕乱妇无码AV在线|
      精选国产av精选一区二区三区
      |
      激情国产一区二区三区四区|
      老鸭窝在钱视频|
      国产一区二区三区十八禁|
      国产亚洲欧洲av综合一区二区三区|
      亚洲第一区二区快射影院|
      高清偷拍一区二区三区|
      国产粉嫩高中无套进入|
      久久夜色撩人精品国产av|
      少妇高潮太爽了在线视频|
      美女又黄又免费的视频|
      在线国产精品中文字幕|