如何一步步创建链表

①.结构体
结构体中分为data(数据域)和next(指针)

struct node {
	int number;
	char str[10];//这里的我随意设置的,想要什么类型自己可以设置
	struct node *next;
};  //struct结构体

②.创建一个全空链表

struct node *head,*tail,*p; //头尾和p指针
head = tail =NULL; //必须先设空,后面才能插入

③.添加

p = (struct node *) malloc(sizeof(node));//赋空间,要注意的是,每次把p插入后必须再次赋予空间
cin>>number>>str;//cin就是C语言中的scanf,即输入。这里的number和str并不是①中结构体里的,你还得重新设置过,这里命名相同是没什么关系的。
p->number=number;
strcpy(p->str,str)//strcpy函数是字符串复制,意思就是p->str=str,但是没这写法,得用到strcpy函数。
p->next = NULL;//把p->next赋为NULL,然后head和tail两个指针就可以指到p上而不再是NULL,也就是不再为空
if(head==NULL) head=p;//就一步就是上面说的头指针指向p而不是NULL,这一步只执行一次
	else tail->next=p;//头指针指向了链表头部后不再移动,尾指针则不断移动,从而使得整个链表不断往后延伸,如果没有这一步链表不会往下延伸,只有最开始的一个
tail = p;//tail在这里就相当于火炬手,需要把火炬(即p指针)传下去,p是不断在更新的。
//它一更新即p = (struct node *) malloc(sizeof(node)),就转世重生没了记忆,不知道自己是谁,自己在哪,这时只有tail可以挽救它,把它传递下去。

如果没看懂在纸上稍微画一下,按照上面的流程推一推。
strcpy详见strcpy函数

③的操作可以不断重复用来延长链表。

实例:查询成绩(链表)

发布了127 篇原创文章 · 获赞 113 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/z2431435/article/details/104616916