关于链表的定义
本帖最后由 whdugh 于 2013-05-27 15:15:49 编辑
struct film
{
char title[TSIZE];
int rating;
};
/* general type definitions */
typedef struct film Item;
typedef struct node
{
Item item;
struct node * next;
} Node;
typedef Node * List;
List movies;这个定义,书上说是在建立一个列表,
而不是在建立一个指向节点的指针或是建立一个结构体。
这句话怎么理解啊?movie不就是一个指向Node结构体的Node类型指针吗?谢谢
[解决办法]
函数的参数传递问题。你写的那个编译都不通过吧。plist是二级指针了,而你让它=一级指针,是不行的。
1 书上写的意思是将一个节点指针置为NULL,因为plist是个二级指针,所以使用时需要传一个节点指针的地址,然后函数内部用*plist表示指针的解引用操作(取指针指向的内容),*plist就成了一级指针了,把它置为NULL,那就是把传进来的指针置为NULL了。
2 书上的意思是不需要修改实参的值了,所以无需传入二级指针(指针的地址),只要把指针值传进来就行了。
关于这个问题,可以思考一下交换两个int的函数
swap(int a ,int b);这样的函数为何不能交换两个实参的值?而必须传入实参的地址,在函数内部通过取地址的值进行交换,才能达到修改实参的目的。
[解决办法]
白马非马论。