📄 linklist.cpp
字号:
#include "LinkList.h"
#include <malloc.h>
#include <iostream>
using namespace std;
// // // // // // // // // // // // // // // // // 建立单链表(逆序)
void LNode::CreateList_L(LinkList &L, int n)
{
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
int i;
for (i=n;i>=1;i--)
{
LinkList p = (LinkList)malloc(sizeof(LNode));
cin>>p->data;
p->next = L->next;
L->next = p;
}
}
// // // // // // // // // // // // // // // // //在第i个元素之前插入e
Status LNode::ListInsert_L(LinkList &L, int i, ElemType e)
{
LinkList pInsert = L;
int nCount = 0;
while (pInsert && nCount <= i-2)// 寻找第i-1个节点
{
pInsert = pInsert->next;
nCount++;
}
if (!pInsert||nCount > i - 1)
return ERROR;
LinkList pNew = (LinkList)malloc(sizeof(LNode));// 生成新节点
pNew->data = e;
pNew->next = pInsert->next;
pInsert->next = pNew;
return OK;
}
// // // // // // // // // // // // // // // // //删除第i个元素,并由e返回其值
Status LNode::ListDelete_L(LinkList &L, int i, ElemType &e)
{
LinkList p = L;
int j = 0;
while(p->next && j < i-1)// 寻找第i-1个节点,使p指向它
{
p = p->next;
j++;
}
if (!(p->next || j > i-1))
return ERROR;
LinkList q;
q = p->next;// q为删除位置的指针
e = q->data;
p->next = q->next;
free(q);
return OK;
}
// // // // // // // // // // // // // // // // // // 获取第i个元素并用e返回
Status LNode::GetElem_L(LinkList L, int i, ElemType &e)
{
LinkList p = L->next;
int j = 1;
while(p && j <i)
{
p = p->next;
j++;
}
if (!p || j>i)
return ERROR;
e = p->data;
return OK;
}
// // // // // // // // // // // // // // // // // // 输出线性表
void LNode::display(LinkList L)
{
LinkList p;
int i = 1;// 控制输出换行
for (p = L->next;p != NULL;p = p->next, i++)
{
if (0 != i%10)
cout<<p->data<<" ";
else
cout<<p->data<<endl;
}
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -