#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
}
创建单链表
最新推荐文章于 2024-09-11 15:01:00 发布