顺序链表的建立

建立顺序链表

建立顺序链表,首先要建立一个包含本类型指针的结构体
比如
struct data
{
int sc;
char name[16];
data next;
};
下图简单的演示了链表的建立过程(不喜勿喷)
在这里插入图片描述
结构体与数组相比更加灵活,它不需要像数组那样存储在连续的空间内,而是可以把链表的各部分存储在不同区域,通过
next指针指向下个链表单元的存储位置。示例代码如下:

//建立顺序链表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct data
{
	int sc;
	char name[16];
	data *next;
};
data *Creat()
{
	int sc;
	data *head,*tail,*p;//需要头指针,尾指针
	char name[16];
	head=tail=NULL;//将其初始化为空
	while(scanf("%d",&sc),sc!=0)//设置终止条件为sc为0
	{
		scanf("%s",name);
		p=(data* )malloc(sizeof(data));//给p申请一块内存,或者说让p指向一块大小为
		p->sc=sc;                                 //sizeof(data)的存储位置
		strcpy(p->name,name);//给p的两个参数赋值,字符串赋值不能用=,应用strcpy()函数
		p->next=NULL;//不要忘记给p的指针赋空,因为这始终是最后一个位置
		/*最关键的三句话*/
		if(head==NULL)      //1.当第一次连接时
			head=p;         //头指针指向p
		else                //2.不是第一次(头指针有意义时)
			tail->next=p;   //让尾指针的指向p
		tail=p;             //将尾指针移动到p位置
	}
	return head;   //返回head的位置,可根据head遍历整个链表
}
/*打印链表*/
void Print(data *head)
{
	data *p=head;//不对head操作,新建一个与head相同的p,对它操作
	if(p==NULL)//链表建立失败
	{
		printf("Not Found!\n");
		return ;
	}
	for(p=head;p!=NULL;p=p->next)
		printf("%d %s\n",p->sc,p->name);
	return ;
}
int main(void)
{
	data *p;
	p=Creat();
	Print(p);
	return 0;
}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值