• 链表的基本操作---创建


     1 #include "stdafx.h"
     2 #include <iostream>
     3 
     4 using namespace std;
     5 //所谓的链表,肯定有头有尾,它不是一个孤独的存在。它的值随着整体变换而变换
     6 //千万不要私自释放掉其中的任何一个结点的值,很可能会造成,链表断裂的情况。
     7 
     8 typedef struct Linklist
     9 {
    10     int data;
    11     Linklist *next;
    12 } Linklist,*plinklist;
    13 
    14 plinklist Create(plinklist &linklist,int num)//这里是引用
    15 {
    16     plinklist p = NULL;//给地址不代表已经分配内存
    17     linklist = new Linklist;//分配内存
    18     linklist ->next = NULL;
    19     for(int i = 0 ;i < num; i++)
    20     {
    21         p = new Linklist;
    22         scanf("%d",&p->data);
    23         p ->next = linklist ->next;
    24         linklist ->next = p;
    25         //delete(p);//千万不能删掉p。貌似p和linklist已经联系在一起。
    26         //p删除会导致linklist里面的指向也会出现问题。
    27     }
    28    return linklist;  //
    29 }
    30 
    31 void Print(plinklist &linklist)
    32 {
    33    plinklist p;
    34    p = linklist ->next;
    35    while(p)
    36    {
    37        printf("%d  ",p->data);
    38        p = p ->next;
    39    }
    40 }
    41 int main()
    42 {
    43     plinklist linklist;//到此,只是分配了一个地址值,并没有开辟空间
    44     Linklist link;//定义变量并没有声明,内存地址是在运行时分配给你
    45     link.data = 5;
    46     int num;
    47     cout << "请输入插入点的数量" <<endl;
    48     cin >> num;
    49     cout << endl;
    50     plinklist l =  Create(linklist,num);  //以上算法是有问题的,必须返回的链表才是正确的。
    51     Print(l);    
    52     return 0;
    53 }
  • 相关阅读:
    LeetCode: Number Complement
    LeetCode: Hamming Distance
    LeetCode: Sum of Left Leaves
    LeetCode: Ransom Note
    LeetCode: Minimum Moves to Equal Array Elements
    LeetCode: Linked List Random Node
    LeetCode: Product of Array Except Self
    LeetCode:Two Sum II
    LeetCode: Minimum Moves to Equal Array Elements II
    杂记 -- 时间段内应用程序调用次数限制
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3583657.html
Copyright © 2020-2023  润新知