线性表的链式结构创建与实现(一)

个人理解,仅供参考大笑

创建链表的步骤:

1:创建头指针

2:将头指针指向空,防止野指针

3:将新的指针移动到头指针(我习惯认为是将头指针赋值给它)

4:建立新结点

5:让新指正指向空,防止野指针

6:给新指针赋值

7:让尾指针指向当前指针,实现链表的连接(我习惯认为是让上一指针指向它)

8:将尾指针移向当前指针(我习惯认为将当前指针赋值给它)

***每次创建新指针的时候都要将指针指向NULL,防止成为野指针

#include<stdio>
typedef struct node
{
	int data;
	struct node *next;
}node;

node *CreateLink(int len)
{
	node *p,*h,*s;
	h=(node*)malloc(sizeof(node));     //建立头结点 
	h->next=NULL;                   //头结点指针指向空,防止野指针
	p=h;                            //指针向头指针移动 
	for(int i=0;i<len;i++)
	{
		s=(node*)malloc(sizeof(node));     //建立新指针
		scanf("%d",&s->data);             //给新指针赋值 
		s->next=NULL                     //新指针指向空,防止野指针
		p->next=s;                       //尾指针指向当前指针,实现链表的连接
		p=s;                             //指针p向后移动 
	} 
	return h; 
}


求链表长度

int GetLenth(node *h)          //*h头指针 
{
	node *p;
	p=h->next;      //p指向第一个结点 
	num=0;          //计数器
	while(p!=NULL)
	{
		num++;  
		p=p->next;       //指针向后移动 
	} 
	return num;
} 

取元素操作(找到第i个元素,并返回其值)

int FindElement(node *h,int i,int len)
{
	node *p;
	p=h->next;        //p指向第一个结点 
	count=1;          //计数器 
	if(i>len&&i<1)    //判断i是否合法 
	    return -1;
	while(p!=NULL&&count<i)   //找到第i个元素 
	{
		p=p->next;       //从头结点开始顺着往后找 
		count++;
	} 
	return p->data; 
} 

输出链表

void Display(node *h)
{
	node *p;
	p=h->next;      //p指向第一个节点 
	while(p!=NULL)
	{
		printf("%d",p->data)    //输出结点数值 
		p=p->next;              //指针向后移动 
	}
}

未完待续...


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值