专栏首页phpcoders数据结构 ----- 线性表中的链式结构(附代码)

数据结构 ----- 线性表中的链式结构(附代码)

链式结构

查看就得从头开始数,然后知道位置,插入的话只要找到位置后将指针位置换一下,所以说链式结构适合插入删除操作

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ERROR 0
#define OK 1

typedef struct Node
{
	int data;
	struct Node* next;
};
typedef struct Node* LinkList;

//头插法创建单链表
void CreateListHead(LinkList* L)
{
	LinkList p;
	int i;
	int a[] = {1,2,3,4,5};
	*L = (LinkList)malloc(sizeof(Node));
	(*L)->next = NULL;
	for (i = 0; i < 5; i++)
	{
		p = (LinkList)malloc(sizeof(Node));
		p->data = a[i];
		p->next = (*L)->next;
		(*L)->next = p;
	}
}

//尾插法创建单链表
void CreateListTail(LinkList* L)
{
	LinkList p, r;
	int b[] = { 1,2,3,4,5 };
	int i;
	*L = (LinkList)malloc(sizeof(Node));
	r = *L;   //就是让r指向尾部结点
	for (i = 0; i < 5; i++)
	{
		p = (LinkList)malloc(sizeof(Node));
		p->data = b[i];
		r->next = p;   //连接到r后面
		r = p;    //将r移到尾部
	}
	r->next = NULL;  //最后

}

//单链表中某个位置上插入元素
void InsertList(LinkList* L, int n, int e)
{
	LinkList p, s;
	p = *L;
	int j = 1;
	while (p && j < n)
	{
		p = p->next;
		j++;
	}
	if (!p && j > n)
	{
		exit(0);
	}
	s = (LinkList)malloc(sizeof(Node));
	s->data = e;
	s->next = p->next;   //先让生成的结点指向p的下一个
	p->next = s;         //然后p指向s就连接上了
}


//删除单链表中某个位置的元素
void DeleteListnumber(LinkList* L, int n)
{
	LinkList p, q;
	p = *L;
	int j = 1;
	while (p->next && j < n)
	{
		p = p->next;
		j++;
	}
	if (!(p->next) && j > n)
	{
		exit(0);
	}
	q = p->next;  //q就是要删除的结点
	p->next = q->next;   //就是让p的下一个指向p的下一个的下一个,就空掉q
	free(q);
}

//输出链表元素
void ShowList(LinkList L)
{
	LinkList p = L->next;
	while (p)
	{
		printf("链表的元素%d\n", p->data);
		p = p->next;
	}
	printf("\n");
}

int main()
{
	LinkList p;
	printf("这里是头插法的单链表,输入的会倒过来输出\n");
	CreateListHead(&p);
	ShowList(p);
	InsertList(&p, 2, 222);
	ShowList(p);

	LinkList m;
	printf("这里是尾插法的单链表,输入的会顺序输出\n");
	CreateListTail(&m);
	ShowList(m);
	DeleteListnumber(&m, 2);
	ShowList(m);
}

结果输出

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据结构 ----- 线性表中的顺序结构(附代码)

    ListEmpty(L):判断线性表是否为空表,若线性表为空,返回true,否则返回false;

    meihuasheng
  • PHP数据结构(二)——链式结构线性表

    PHP数据结构(二)——链式结构线性表 (原创内容,转载请注明来源,谢谢) 线性表分为顺序结构和链式结构,链式结构里每一个数据单元除了有数据之外,还有一个空间...

    用户1327360
  • 数据结构:线性表之链式存储结构

    为了表示每个数据元素ai与其直接后继元素ai+1之间的逻辑关系,对数据ai,除了存储其自身的信息之外,还需存储一个指示其 直接后继的信息(即直接后继的存储位置)...

    s1mba
  • 数据结构——线性表之链式存储结构

    说故事的五公子
  • 《大话数据结构》线性表的链式存储结构

    前面我们看过线性表的顺序存储结构,他是通过数组开辟一段连续的地址空间来实现的,在做插入操作和删除操作时,因为要维护数组的结构所以时间复杂度为O(N);有什么办法...

    大猫的Java笔记
  • 【数据结构】线性表的链式表示之单链表

    同样在这篇文章中主要讲插入和删除元素,因为另外两个操作都可以基于删除操作演变而来,所以改、查两个操作只给出代码。

    程序员周同学
  • 数据结构-线性表|顺序表|链表(中)

    回到正题,继上次出了数据结构线性表的内容上以后,这次又给大家更新啦。这次介绍的是单链表和静态链表的内容,话不多说,开始我们的正题。 【注:代码下载请移步留言区】...

    用户1621951
  • 数据结构-线性表|顺序表|链表(中)

    回到正题,继上次出了数据结构线性表的内容上以后,这次又给大家更新啦。这次介绍的是单链表和静态链表的内容,话不多说,开始我们的正题。

    短短的路走走停停
  • 数据结构--线性表链式存储(链表)--单链表

    链表中的数据是以节点来表示的,每个结点的构成:元素( 数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址...

    风骨散人Chiam

扫码关注云+社区

领取腾讯云代金券