c语言链表creat函数,C语言链表函数

求问c语言大神 链表的中的creat函数有问题 跪求错误之处怎么改

void creat(struct link *head)

创新互联公司于2013年创立,先为海原等服务建站,海原等地企业,进行企业商务咨询服务。为海原企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

把head[1]全改为head

就一个元素为什么要定义一个数组 凡是后面[1]的都改了

c语言 单链表 create 函数为什么要用 &L地址不用L

因为如果是L的话,就要把整个这个结构体都传过去,效率不高,而用其指针传递的只是一个地址,效率要高很多,尤其对于大型程序来说。而且creat函数里有*L,这就是指向结构体了,刚好需要传指向结构体 的指针,所以只能取址L,说白了 一个穿的是指针,而一个传的是结构体,效率高下之分一看就知道

c语言 creatlist 自定义函数求理解

struct list *createlist(int data[], int n)

{

//输入一个数组,n是数组的大小,返回一个内容相同的链表

struct list *head = 0, *p, *q;//head:链表头

int i;

head = (struct list *) malloc(sizeof(struct list));//建立链表头,分配空间

head-data = data[0];//往链表头填入数据data[0]

p = q = head;//这些是循环变量,p先走,q跟着,俩人从链表头一直走到链表尾

//每次循环,p和q一开始指向链表末尾的节点上。 p先走,malloc函数改变了他的值,他指向了一块新的内存空间,就是新的节点;然后q-next=p把新连起来;然后 q跟上p的步伐,q=p,相当于二者又站在了末尾的节点上。

for(i=1; in; i++)

{

p = (struct list *) malloc(sizeof(struct list));//p变成一个新的节点,给p分配空间(注意p的值被改写了,它不再是head,而是一个新的值,就是下一个节点)

p-data = data[i];//p装入数据,第一次循环它装入的是data[1],也就是紧跟着head的那个

q-next = p;//第一次循环q是head,以后每次都是q落后p一个格子。

//第一次循环相当于head-next=p,把第1个节点放在第0个节点后面。

q = p;

//第一次循环q=p,q追上p的脚步,离开head(第0

//第二次循环q=p,p又变成新的节点,相当于把第2个节点(p)放在第一个节点后面

}

p-next = NULL;//封锁野指针

return head;

}

不懂欢迎追问

c语言编写一个建立学生链表的函数creat( )。

#include stdio.h

#include malloc.h

#include string.h

#define N 5

typedef struct node

{

char number[10];

int data;

struct node *next;

}node;

node * create()

{

node *p,*s,*h; char number[10];

int j=1,x;

p=s=h=(node*)malloc(sizeof(node));

h-next=NULL;

printf("please input the data to create the list,end with -1 or %d numbers\n",N);

while(x!=-1j=N)

{

printf("input name:");

scanf("%s",number);

printf("input age:");

scanf("%d",x);

s=(node*)malloc(sizeof(node));

s-data=x;

strcpy(s-number,number);

if(h-next==NULL)

h-next=s;

else

p-next=s;

p=s;

j++;

}

p-next=NULL;

return h;

}

int main()

{

node *p;

p=create() ;

return 0;

}


网页名称:c语言链表creat函数,C语言链表函数
转载来于:http://myzitong.com/article/dssephe.html