首页 > 代码库 > 线性表的链式存储结构

线性表的链式存储结构

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

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

#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=http://www.mamicode.com/x;"%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=http://www.mamicode.com/x;"%d",&x);	}	r->next=NULL;	return L;}

 

线性表的链式存储结构