创建单链表

#include <corecrt_malloc.h>
#include <stdio.h>
#include <stdlib.h>
constexpr auto OK = 1;
constexpr auto Error = 0;


typedef int ElemType;
#ifndef Node
typedef struct Node
{
	ElemType data;			//数据域
	struct Node* next;		//指针域
}LinkList;
#endif // !LinkList
//typedef struct Node *LinkList;

typedef int Status;
Status GetElem(LinkList *L,int i ,ElemType &e)
{
	int j;
	LinkList *p;
	p = L;
	if (p)
	{
		for (j = 1;j < i; j++)
		{
			p = p->next;
		}
	}
	if (!p || j > i)
	{
		return Error;
	}
	e = p->data;
	return OK;
}

//创建链式存储线性表
Status CreateLinKList(LinkList *&head,ElemType a[], int n)
{
	head = (LinkList*)malloc(sizeof(LinkList));
	if (head == NULL)
	{
		exit(EXIT_FAILURE);					//异常退出
		return Error;
	}
	else
	{
		LinkList* curNode, * newNode;
		curNode = head;
		if (sizeof(a) != 0)
		{
			for (int i = 0;i < n;i++)
			{
				newNode = (LinkList*)malloc(sizeof(LinkList));
				if (newNode == NULL)
				{
					exit(EXIT_FAILURE);		//异常退出
					return Error;
				}
				curNode->data = a[i];
				curNode->next = newNode;
				curNode = newNode;
			}
		}
		curNode->next = head;
	}
	return OK;
}

//插入新的节点
Status insertLinkedList(LinkList *L, int n, ElemType e)
{
	if (n < 1)
	{
		return Error;
	}
	LinkList* node;
	node = L;
	for (int i = 1;i < n;i++)
	{
		node = node->next;
	}
	LinkList* newNode;
	newNode = (LinkList*)malloc(sizeof(LinkList));
	if (newNode == NULL)
	{
		exit(EXIT_FAILURE);		//异常退出
		return Error;
	}
	newNode->data = e;
	newNode->next = node->next;
	node->next = newNode;
	return OK;
}

//线性表链式存储操作
void LinkedListOperate()
{
	ElemType X;
	ElemType sqlList[5] = { 0,1,2,3,4 };
	LinkList* ListLink;
	CreateLinKList(ListLink,sqlList, 5);	//创建顺序表
	GetElem(ListLink, 3, X);				//获取链式表数据
	printf("链表中第3个数据是:%d\n", X);	//头数据为null
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值