菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
197
0

创建结点 与 分配内存 Function to create a Node. Allocates memory for a new node. 主动申请内存 链表 指针的写法

原创
05/13 14:22
阅读数 68197

 

Self Referential Data Structure in C - create a singly linked list http://www.how2lab.com/programming/c/link-list1.php

 

#include <stdio.h>
typedef struct st  {
	int  data;
	struct st* s;
} alias;
alias *createNode() {
	alias *new;
	new=(alias *)malloc(sizeof(alias));
	return new;
}
int main() {
	alias a,*b;
	b=createNode();
	a.data=123;
	b->data=456;
	a.s=b;
	printf("%d,",a.data);
	printf("%d,",a.s->data);
	return 1;
}

  

注意:

typedef struct st {
int data;
struct st *s;
} alias;

typedef struct st {
int data;
struct st* s;
} alias;

 同

 

alias* createNode() {
alias *new;
new=(alias *)malloc(sizeof(alias));
return new;
}

alias *createNode() {
alias *new;
new=(alias *)malloc(sizeof(alias));
return new;
}

 同

 

 

 

#include <stdio.h>
typedef struct st  {
	int  data;
	struct st* s;
} alias;
alias *createNode() {
	alias *new;
	new=(alias *)malloc(sizeof(alias));
	return new;
}
int main() {
	alias a,*b;
	b=createNode();
	a.data=123;
	b->data=456;
	a.s=b;
	printf("%d,",a.data);
	printf("%d,",a.s->data);
	alias *c;
	c=createNode();
	c->data=789;
	(*b).s=c;
	printf("%d,",a.s->s->data);
	return 1;
}

  

 

#include <stdio.h>
int* createInt() {
	int *new;
	new=(int *)malloc(sizeof(int));
	return new;
}
int main() {
	int *a;
	int *b;
	a=createInt();
	b=createInt();
	*a=123;
	*b=456;
	printf("%d,",*a);
	printf("%d,",*b);
	return 1;
}

  

#include <stdio.h>
int* createInt() {
	int *new;
	new=(int *)malloc(sizeof(int));
	return new;
}
int main() {
	int *a;
	int* b;
	a=createInt();
	b=createInt();
	*a=12;
	*b=34;
	printf("%d,",*a);
	printf("%d,",*b);
	return 1;
}

  

 

 

对指针变量的赋值

 

 

以下未报错

#include <stdio.h>
int* createInt() {
	int *new;
	new=(int *)malloc(sizeof(int));
	return new;
}
int main() {
	int *a;
	/*
	int* b;

	a=createInt();
	b=createInt();
	*/
	a=12;
	/*
	*b=34;
	printf("%d,",*a);
	printf("%d,",*b);
	*/
	printf("CAN!,");
	return 1;
}

  

 

15 3 D:\editorTool\main.c [Warning] assignment makes pointer from integer without a cast

 

 

4 13 D:\editorTool\main.c [Warning] incompatible implicit declaration of built-in function 'malloc'

 

发表评论

0/200
197 点赞
0 评论
收藏
为你推荐 换一批