在C语言用自引用结构实现链表结构需要解决三个问题
提问人:杨紫红发布时间:2020-11-17
(1)必须指出链表第一个结点的位置,否则无法存取该链表中的结点
实现方法:定义一个指向该结构对象的指针,或定义一个该结构类型的变量,使其指向链表的第一个结点即可。如:
struct node *head;
(2)在建立一链表时,如何获得下一个新的结点的存放空间。
实现方法:用C编译系统提供的库函数malloc(size)动态分配存储空间得到。
除此之外,还可用calloc函数。如:
struct node *p1, *p2;
…
p2=(struct node *) malloc(size(struct node));
或: p2=(struct node *) calloc(1, size(struct node));
if (p2= =NULL) exit(0);
p1->next=p2; /*此处设p1指向新结点的上一结点*/
另外:free函数可用于释放内存区。
如:free(p); 表示释放由p指向的内存区,使这部分内存区能被其他变量使用。
(3)要明确指出链表的链尾。
实现方法:通常把最后结点中的成员项next置为空指针NULL即可。
实现方法:定义一个指向该结构对象的指针,或定义一个该结构类型的变量,使其指向链表的第一个结点即可。如:
struct node *head;
(2)在建立一链表时,如何获得下一个新的结点的存放空间。
实现方法:用C编译系统提供的库函数malloc(size)动态分配存储空间得到。
除此之外,还可用calloc函数。如:
struct node *p1, *p2;
…
p2=(struct node *) malloc(size(struct node));
或: p2=(struct node *) calloc(1, size(struct node));
if (p2= =NULL) exit(0);
p1->next=p2; /*此处设p1指向新结点的上一结点*/
另外:free函数可用于释放内存区。
如:free(p); 表示释放由p指向的内存区,使这部分内存区能被其他变量使用。
(3)要明确指出链表的链尾。
实现方法:通常把最后结点中的成员项next置为空指针NULL即可。
继续查找其他问题的答案?
相关视频回答
回复(0)
点击加载更多评论>>