zoukankan      html  css  js  c++  java
  • 链表的基本操作---创建

     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 }
  • 相关阅读:
    !!!!Linux系统开发 系列 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程
    linux运维工程师
    C# CSGL
    C# 中的"yield"使用
    C#语法糖
    VS2017下Git的使用
    Oracle数据类型与.NET中的对应关系
    Java 8 Stream
    Java 8 默认方法
    Java 8 函数式接口
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3583657.html
Copyright © 2011-2022 走看看