前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构 ----- 线性表中的链式结构(附代码)

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

作者头像
meihuasheng
发布2021-03-18 11:08:31
3770
发布2021-03-18 11:08:31
举报
文章被收录于专栏:phpcodersphpcoders

链式结构

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

代码语言:javascript
复制
#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);
}

结果输出

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 链式结构
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档