初学链表-1

#include <stdio.h>
#include <stdlib.h>//说明使用堆区(空间大,快)
struct list //结构体名list,也就是说定义这个节点包括两个部分(data 和指针)
{
int data;
struct list *next;
};
//定义一个别名
struct list node;
struct list *link;//定义一个结构体指针
int main()
{

**struct list *ptr;//结构体指针
struct list *head;//结构体指针**
int i,num;//变量
ptr=(struct list *)malloc(sizeof(node));//为ptr开辟一个节点的空间
head=ptr;//头指针(因为ptr要逐步往下走,所以先定义一个头结点)
printf("input 5 numbers:\n");
for(i=0;i<5;i++)//循环输入,和数组差不多,但是注意结构体里面定义的类型 若是字符型的话,scanf赋值没有&。
{
	scanf("%d",&num);
	ptr->data=num;//ptr的数据赋值
	ptr->next=(struct list *)malloc(sizeof(node));//为下一个开辟空间
	if(i==4)//结束的时候别忘了定义next为空,因为malloc函数必须有next的赋值
		ptr->next=NULL;
	else 
		ptr=ptr->next;
}
ptr=head;//把刚刚保存的head值赋给ptr,方便ptr输出
while(ptr!=NULL)//循环输出
{
	printf("%d  ",ptr->data);
	ptr=ptr->next;
}
printf("\n");
return 0;

}
其实我学链表的时候就觉得,多此一举,明明用数组,或者直接输入输出就可以实现这些功能,但是现在做题多了,就发现,没有那么多单纯的输入输出,有的题不用链表根本无从下手。所以好好学吧,祝我复试顺利!!!

猜你喜欢

转载自blog.csdn.net/jijijun/article/details/104754692