• 链表相关操作


     1 #include <iostream>
     2 using namespace std;
     3 typedef struct list
     4 {
     5     int data;
     6     struct list* next;
     7     list():data(0),next(NULL){}
     8 }List;
     9 
    10 //1. 后插法插入数据
    11 void insertData(List *p, int data)
    12 {
    13     if (p == NULL)
    14         return;
    15 
    16     //申请空间
    17     List *tmp = (List *)malloc(sizeof(List));
    18     tmp->data = data;
    19     tmp->next = NULL;
    20 
    21     //插入链表
    22     while (p->next != NULL)
    23         p = p->next;
    24     p->next = tmp;
    25 }
    26 //2. 打印数据
    27 void printData(List *p)
    28 {
    29     while (p != NULL)
    30     {
    31         cout << p->data << endl;
    32         p = p->next;
    33     }
    34 }
    35 
    36 //3.链表逆序1
    37 /*******************************************
    38 三个指针,pre,cur,next
    39 先保存cur的next到next中;
    40 然后cur->next指向前面的;
    41 pre和cur向前推进,next只是临时存储cur->next
    42 *******************************************/
    43 List* revertList(List *p)
    44 {
    45     List *pre  = nullptr;
    46     List *next = nullptr;
    47     while (p != nullptr)
    48     {
    49         next = p->next;
    50         p->next = pre;
    51         pre = p;
    52         p = next;
    53     }
    54     return pre;
    55 }
    56 //4.链表逆序2
    57 /***********************************
    58 将链表看成两个结点,头结点和后面整体
    59 ***********************************/
    60 List* revertList2(List *p)
    61 {
    62     List *newphead;
    63     if ((p == NULL) || (p->next == NULL))
    64         return p;
    65     newphead = revertList2(p->next);
    66     p->next->next = p;
    67     p->next = NULL;
    68     return newphead;
    69 }
    70 
    71 
    72 int main()
    73 {
    74     List *phead = new List;
    75     for (int i = 0; i < 20; i++)
    76     {
    77         insertData(phead, i);
    78     }
    79 
    80     printData(phead);
    81 
    82     phead=revertList(phead);
    83 
    84     printData(phead);
    85     cout << "AAAAAAAAAAAAA" << endl;
    86     phead = revertList2(phead);
    87 
    88     printData(phead);
    89 
    90 
    91     return system("pause");
    92 }
  • 相关阅读:
    Django进阶2
    Django进阶
    Django基础
    jQuery基本操作
    Dom编程
    JavaScript简介
    Python—sqlalchemy
    Python—RabbitMQ
    Python—redis
    Python—操作redis
  • 原文地址:https://www.cnblogs.com/henkk/p/12887575.html
Copyright © 2020-2023  润新知