从0开始的数据结构的书写-------线性表(单链表)

(复习考研的休息区,心血来潮,写点代码)

三个规则:

1、不使用c++ stl库进行书写

2、最好基于严蔚敏老师的数据结构

3、最好使用malloc和realloc动态分配内存

(如果有问题或者是有没有实现的操作,请大家提出来)

cpp 复制代码
// 链表实现 
#include<iostream>
#include<cstring>

using namespace std;

#define N 100
#define OK true 
#define ERRORINT 0x3f3f3f3f3f
#define ERROR false

typedef struct LNode
{
	// 单链表 
	int data;
	struct LNode *ne;
}LNode , *LinkList;


void InitList(LinkList &L)
{
	L = (LinkList)malloc(sizeof(LNode));
	L -> ne = NULL; // 建立带头节点的单链表 
}

// 头插法 
void HeadInsert(LinkList &L)
{
	for(int i = 1;i <= 10;i ++)
	{
		LinkList p = (LinkList)malloc(sizeof(LNode));
		p -> data = i;
		p -> ne = L -> ne;
		L -> ne = p;
	}
} 

// 尾插法
void TailInsert(LinkList &L)
{
	LinkList now = L;
	for(int i = 1;i <= 10;i ++)
	{
		LinkList p = (LinkList)malloc(sizeof(LNode));
		p -> data = i;
		now -> ne = p;
		now = p;
	}
	now -> ne = NULL;
} 

// 插入到第idx位置 
bool InsertList(LinkList &L , int idx , int e)
{
	LinkList p = L;
	int i = 0;
	while(p && i < idx - 1) 
	{
		p = p -> ne;
		i ++;
	}
	if(!(p -> ne) || i > idx - 1) return ERROR;
	
	cout << "插入数据" << e << endl; 
	LinkList s = (LinkList) malloc(sizeof(LNode));
	s -> data = e;
	s -> ne = p -> ne;
	p -> ne = s;
	
	return OK;
}

// 删除节点 
int DeleteList(LinkList &L , int idx)
{
	LinkList p = L;
	int i = 0;
	while(p && i < idx - 1)
	{
		p = p -> ne;
		i ++;
	}
	if(!p || i > idx - 1) return ERROR;
	int e = p -> ne -> data;
	cout << "删除节点" << e << endl; 
	p -> ne = p -> ne -> ne;
	return e;
}

void print(LinkList L)
{
	LinkList p = L;
	cout << "当前链表数据为:";
	p = p -> ne;
	bool f = false;
	while(p)
	{
		if(f) cout << "->";
		cout << p -> data;
		f = true;
		p = p -> ne;
	}
	cout << endl;
}

int main()
{
	LinkList L;
	InitList(L);
	
	// HeadInsert(L);
	// print(L)
	TailInsert(L);
	print(L);
	
	InsertList(L , 3 , 11);
	InsertList(L , 5 , 12);
	print(L);
	DeleteList(L , 6);
	DeleteList(L , 3);
	print(L);
	return 0;
}
相关推荐
Dovis(誓平步青云)36 分钟前
《C++哈希表:高效数据存储与检索的核心技术》
数据结构·散列表·哈希表
秋难降2 小时前
聊聊 “摸鱼式” 遍历 —— 受控遍历的小心机
数据结构·算法·程序员
Code_Artist2 小时前
[Java并发编程]4.阻塞队列
java·数据结构·后端
嗑嗑嗑瓜子的猫2 小时前
大白话聊一聊,数据结构的基石:数组和链表
数据结构·链表·数组
小xin过拟合6 小时前
day20 二叉树part7
开发语言·数据结构·c++·笔记·算法
刘 大 望6 小时前
网络编程--TCP/UDP Socket套接字
java·运维·服务器·网络·数据结构·java-ee·intellij-idea
寻星探路7 小时前
数据结构青铜到王者第三话---ArrayList与顺序表(1)
数据结构
今后1237 小时前
【数据结构】顺序表详解
数据结构·顺序表
啟明起鸣7 小时前
【数据结构】B 树——高度近似可”独木成林“的榕树——详细解说与其 C 代码实现
c语言·开发语言·数据结构
这周也會开心7 小时前
数据结构-ArrayList
数据结构