1.对于typedef的思考:
typedef struct node{
struct node *next;
int data;
}Node,*Linklist;
上面这样是可以定义链表,但是要明白那两个node/Node的区别。
小写的node是struct本身的名字,递归时需要用到的,下面的Node是typedef的作用,便于我们在对对链表操作定义节点时候区分开的。函数中定义节点两个node/Node都能用,但一般用Node这种。
Node *q=(Linklist)malloc(sizeof(Node));
q=L->next;
node *q=(Linklist)malloc(sizeof(node));
q=L->next;
两者都可以。
2.Node * 和Linklist有相同的作用,但是前者定义链表中的节点多,后者表示链表的首元节点多。头节点不是链表所必须的。