基本操作之一(单链表的建立与遍历)

一、使用typedef 创建构造数据类型时

1 typedef struct LNode
2 {
3      ElemType   data;     //数据域
4      struct LNode  *next; //指针域
5 } LNode, *LinkList; 

若有迭代(在第四行),则第一行的“LNode”不可省略。

 

二、LNode *和*LinkList是等价的(都可以用来指向新的节点)

为了提高程序的可读性,在此对同一结构体指针类型起了两个名称

 1 int a = 9;    
 2 LNode L1;
 3 L1.data = a;
 4 L1.next = NULL;
 6 LinkList L2;//用LinkList定义结构体变量L2 
 7 L2 = &L1;   
 9 LNode *L3;
10 L3 = &L1;

 

三、初始化和创建单链表时要用引用调用保存数据

1 Status InitList( LinkList & ); //函数声明
2 
3 Status InitList( LinkList &L )
4 
5 void CreateList( LinkList &, int ); //函数声明
6 
7 void CreateList( LinkList &L, int n )

四、若要访问结构体指针类型内的成员变量,有两种方式:p-> 和 (*p).

 1 void CreateList( LinkList &L, int n )
 2 {
 3     LNode *p, *r; 
 4     r = L ; //尾指针r指向头结点     
 5     for( int i=0; i<n; ++i )
 6     { 
 7         p = new LNode ;  
 8         cin >> (*p).data; 
 9         p->next = NULL;
10         r->next = p;
11         r = p ;
12     } 
13 }

五、清空链表

 1 void DestroyList( LinkList L )
 2 {//回收L的所有结点的空间 
 3     LNode *p = L, *q;//L已经是一个地址了所以不用& 
 4     while ( p ) //当p指向结点不为空 
 5     {    
 6        q = p->next;    //q指向p的下一结点 
 7        delete p; //回收p指向的结点空间 
 8        p = q; //p指向q指向的结点 
 9     }
10 }

 

posted @ 2019-03-17 15:17  Winston-wmj  阅读(706)  评论(0编辑  收藏  举报