c语音实现单链表初始化的四种方式

typedef struct myLink {
	int data;
	struct myLink *next;
} myLink, *myLLink;

1、指针的指针

对于上面的简单结构,用函数赋值需要传递引用,需要用到指针的指针。对指针使用不是很清楚的童鞋很是头痛。

void initlink(myLink** head) {
	*head= (myLink*)malloc(sizeof(myLink));
	if(!*head){
		printf("没有可用内存!");
	}
	(*head)->next = NULL;
}


int main() {
	
  	myLink* head;  
	initlink(&head); 
}

2、利用函数返回的方式

        为避免使用指针的指针,可以利用函数返回的方式给指针赋值。这也是最简单,最易理解的方式。

myLink* initlink( ) {
	myLink* temp = (myLink*)malloc(sizeof(myLink));
	temp->next = NULL;
	return temp;
}


int main() {
	
  	myLink *head; 
	head = initlink();
}

3、变相使用指针的指针

       myLLink是myLink结构类型的指针。


void initlink(myLLink* head) {
	*head = (myLink*)malloc(sizeof(myLink));	
	(*head) ->next=NULL;
}

int main() {
	
  	myLLink head;  
	initlink(&head); 
}

4、利用全局变量避免传递指针

#include <stdio.h>
#include <stdlib.h>

typedef struct myLink {
	int data;
	struct myLink *next;
} myLink;

myLink * head;
 
void creatlink( int data);
void showlist();
void printlink(myLink*);
int main() {

	 head=NULL;
	creatlink(32);
	creatlink(42);
	creatlink(52);
	creatlink(62);
	showlist();
	printlink(head);
}

void creatlink( int data) {

	myLink* temp = (myLink*)malloc(sizeof(myLink));
	temp->data = data;
	temp->next = head;
	head = temp;
}

void showlist() {
	myLink* temp = head;
	while (temp) {
		printf("%d\n", temp->data);
		temp = temp->next;
	}
}

void printlink(myLink* p){
	if(p ==NULL){
		 printf("\n");
		 return;
	}
	printlink(p->next);
	printf("%d  ",p->data);
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值