#include <stdio.h>
#include <iostream>
#define MAXSIZE 10
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
using namespace std;
typedef struct LNode
{
int data;
struct LNode *next;
} LNode, *LinkList;
//单链表初始化
Status InitList(LinkList &L)
{
L = new LNode;
L->next = NULL;
return OK;
}
//前插法创建链表
void CreateList_Q(LinkList &L, int k)
{
LNode *p, *s, *g;
for (int i = 0; i < k; i++)
{
p = new LNode;
cin >> p->data;
p->next = L->next;
L->next = p;
}
}
//后插法创建单链表
void CreateList_H(LinkList &L, int k)
{
LNode *p, *s;
s = L;
for (int i = 0; i < k; i++)
{
p = new LNode;
cin >> p->data;
p->next = NULL;
s->next = p;
s = p;
}
}
//输入序号,返回元素值
Status GetElem(LinkList L, int i, int &e)
{
LNode *p;
int j = 1;
p = L->next;
while (p && j < i)
{
p = p->next;
j++;
}
if (!p || j > i)
return ERROR;
e = p->data;
return OK;
}
//输入元素值,将返回该元素值的地址
LNode *LocatElem(LinkList L, int e)
{
LNode *p;
p = L->next;
while (p && p->data != e)
p = p->next;
return p;
}
//单链表的插入
Status ListInsert(LinkList &L, int i, int e)
{
LNode *p, *s;
p = L;
int j = 1;
while (p && j <= i - 1)
{
p = p->next;
j++;
}
if (!p || j > i)
return ERROR;
s = new LNode;
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
//单链表的删除
Status ListDelete(LinkList &L, int i)
{
LNode *p, *q;
p = L;
int j = 1;
while (p && j <= i - 1)
{
p = p->next;
j++;
}
if (!p || j > i)
return ERROR;
q = p->next;
p->next = q->next;
delete q;
return OK;
}
//遍历单链表
void Show(LinkList L)
{
LNode *p;
p = L->next;
while (p)
{
cout << p->data << " ";
p = p->next;
};
delete p;
}
Status main()
{
int i, k, e;
LinkList L;
InitList(L); //单链表初始化*************
// cout << "请输入为空链表添加元素的个数";
// cin >> k;
// CreateList_Q(L, k); //前插法创建链表******************
// cout << "请输入为空链表添加元素的个数";
// cin >> k;
// CreateList_H(L,k);//后插法创建单链表*************
// cout<<"请输入想要获取元素的序号";
// cin>>i;
// GetElem(L,i,e);//输入序号,返回元素值********************
// cout<<"该序号对应的元素值为:"<<e;
// cout<<"请输入元素值,将返回该元素值的地址";
// cin>>e;
// cout<<"该元素的地址值为"<<LocatElem(L,e);//输入元素值,将返回该元素值的地址**************
// cout<<"请输入要插入的位置";
// cin>>i;
// cout<<"请输入要插入的值";
// cin>>e;
// ListInsert(L,i,e);//单链表的插入***************
// cout<<"请输入要删除元素序号";
// cin>>i;
// ListDelete(L,i);//单链表的删除***************
Show(L);
}
C语言实现线性表链式存储结构
最新推荐文章于 2023-03-23 19:32:49 发布