实现单链表头插尾插。

数据结构--单链表头插尾插

头插法:

该方法从空表开始,生成新的结点,并将读取到的数据存放在新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后。

在这里插入图片描述

下面展示代码

#include<stdio.h>
#include<stdlib.h>
	typedef  struct LNode{
		int data;
		struct LNode *next;
		
	}LNode , *LinkList;
	
	LinkList List_HeadInsert(LinkList &L){
		LNode * s; int x;
		L = (LinkList)malloc(sizeof(LNode));
		L->next = NULL;
		scanf("%d",&x);
		while (x!= 9999){
			s = (LinkList)malloc(sizeof(LNode));
			s->data = x;
			s->next = L->next; 
			L->next = s;  //将新节点插入表中。
			scanf("%d",&x);
		}
		return L;
	}
	int main(){
		LinkList L;
		L=List_HeadInsert(L);
		while(L->next!=NULL){
		   printf("%d",L->next->data);
		   L=L->next;
		}
	
	}
尾插法:

头插法建立单链表的算法虽然简单,单生成的链表中的结点的次序和输入数据的顺序不一样,若希望两者次序一样,可采用尾插法。该方法将新的结点插入到当前链表的表尾,为此必须增加一个尾指针r,使其始终为链表的尾结点。

在这里插入图片描述

下面展示代码

#include<stdio.h>
#include<stdlib.h>
	typedef  struct LNode{ //定义结点类型
		int data; //数据域
		struct LNode *next; //指针域
		
	}LNode , *LinkList;
	LinkList List_TailInsert(LinkList &L){  //尾插法
		int x; //设置元素类型为整型
		L = (LinkList)malloc(sizeof(LNode));
		LNode *s,*r =L; //r为表尾指针
		scanf("%d",&x);  //输入节点值
		while(x!=9999){
			s = (LinkList)malloc(sizeof(LNode));
			s->data = x;
			r->next = s;
			r = s; //r指向表尾结点。
			scanf("%d",&x);
		}
		r->next= NULL; // 表尾置空。
		return L;
	}
	int main(){
		LinkList L;
		L = List_TailInsert(L);
		while(L->next!=NULL){ //循环打印链表数据
			printf("%d",L->next->data);
			L= L->next;  
		}
		
	}

一年短暂又关键,come on。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值