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

 

 

 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 }

 

posted on 2014-03-06 00:17  zhuxuekui3  阅读(238)  评论(0编辑  收藏  举报