码迷,mamicode.com
首页 > 其他好文 > 详细

线性表的链式存储结构

时间:2017-04-10 15:21:20      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:nbsp   空间   查找   单链表   .com   节点   link   can   分享   

要求:使用头插法和尾插法来分别创建两个线性表,编程实现单链表的查找、插入和删除操作的算法。

首先引入头文件,定义结构体:

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef int ElemType;

//定义节点类型
typedef struct LNode
{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

 

(1)、创建链表

头插法:链表的逻辑顺序与结点的插入顺序相反,即逆序。从一个空表开始,反复的读入数据,生成结点放到链表中,注意这里是插入到当前链表的表头之后,如下图:

技术分享

创建方法如下:

//单链表的建立(头插法建立)
LinkList CreateLinkList_H()
{
	LNode *L;
	ElemType x;
	//申请头结点的空间
	L=(LNode *)malloc(sizeof(LNode));
	L->next=NULL;
	scanf("%d",&x);
	while(x!=-1)
	{
		LNode *p;
		p=(LNode *)malloc(sizeof(LNode));//申请新节点的空间
		p->data=x;
		p->next=L->next;
		L->next=p;
		scanf("%d",&x);
	}
	return L;
}

 

尾插法:线性表的逻辑顺序与节点的插入顺序相同,将新节点插入到当前链表的链尾上,为此必须加上一个尾指针指针p使其一直指向当前链表的尾结点。如图

技术分享

创建方法如下:

//单链表的建立(尾插法建立)
LinkList CreateLinkList_T()
{
	LNode *L,*r,*p;
	ElemType x;
	L=(LNode *)malloc(sizeof(LNode));
	L->next=NULL;
	r=L;
	scanf("%d",&x);
	while(x!=-1)
	{
		p=(LNode*)malloc(sizeof(LNode));
		p->data=x;
		p->next=r->next;
		r->next=p;
		r=p;
		scanf("%d",&x);
	}
	r->next=NULL;
	return L;
}

 

线性表的链式存储结构

标签:nbsp   空间   查找   单链表   .com   节点   link   can   分享   

原文地址:http://www.cnblogs.com/helloworldcode/p/6688554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!