资源简介
数据结构线性表操作的一个实验:
实验要求
顺序和链式存储的线性表的创建、获取元素、插入和删除元素等基本操作的实现。
题目要求:
输入:一组整型数据A,一组整型数据B
输出:A与B的交集,以及A与B的并集
要求:A和B使用两种存储方式:顺序存储和链式存储。
代码片段和文件信息
#include
#include
#include
using namespace std;
#define OK 1//定义常用判断词为整型数值
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;//定义Status为整型类型
typedef int ElemType;//ElemType类型可根据实际情况改变,首先定义ElemType为整型类型
struct Node;//声明结点结构体
typedef struct Node *PtrToNode;//定义PtrToNode、linkList、Position类型
typedef PtrToNode linkList;
typedef PtrToNode Position;
struct Node//结构体定义
{
ElemType data;
Position next;
};
//函数的声明
linkList InitList();//创建空的单链表
Status IsEmpty(linkList L);//判断是否为空,返回0或1
Status GetLength(linkList L);//获得单链表的长度并返回
Status GetElem(linkList Lint iElemType &e);//将单链表L中的弟i个结点元素值返回给e
Status Insert(linkList Lint iElemType e);//在单链表的第i个结点前插入元素值为e的结点
Status Delete(linkList Lint iElemType &e);//删除单链表中第i个结点,并用e返回其值
Status AvoidList(linkList L);//除掉集合中重复的元素
Status DispList(linkList L);//打印集合中所有的元素
Status IntersectlinkList(linkList LalinkList Lb);//求两个集合的交集并打印这个交集的所有元素
Status UnionlinkList(linkList LalinkList Lb);//求两个集合的并集并打印这个并集的所有元素
//函数定义
//单链表初始化
linkList InitList()
{
linkList L;
L =(linkList) malloc(sizeof(Node)) ;//创建一个单链表的头结点,并且指向空
L->next = NULL;
return L;
}
//判断单链表是否为空,并返回判断结果
Status IsEmpty(linkList L)
{
return L->next == NULL;
}
//获取单链表的长度并返回
Status GetLength(linkList L)
{
if(IsEmpty(L)==1)//如果单链表为空,则返回0
return 0;
Position p;//声明一个指针
p=L;
int i=0;
while(p->next)//使用p->next遍历所有结点直到指向NULL并计数
{
i++;
p=p->next;
}
return i;
}
//将单链表L中的弟i个位置元素值返回给e
Status GetElem(linkList Lint i ElemType &e)
{
if(IsEmpty(L)==1)//如果单链表为空,停止寻找
return ERROR;
int j = 1;//j为计数器
Position p;//声明一个指针让p指向L的第一个结点
p=L->next;
while(p&&j {
p=p->next;
j++;
}
if(!p||j>i)
return ERROR;//第i个结点不存在
e=p->data;//取第i个结点的数据
return OK;
}
//在单链表中的第i个结点前插入值为e的结点
Status Insert(linkList Lint iElemType e)
{
if(i<1)
return ERROR;
int j=1;
Position ps;
p = L;
while(p&&j {
p = p->next;
j++;
}
if(!p||j>i)
return ERROR;//第i-1个结点不存在
s=(linkList)malloc(sizeof(Node));//生成新结点
s->data=e;
s->next=p->next;//将p的后继结点赋值给s的后继结点
p->next=s;
return OK;
}
//删除单链表中第i个结点,并用e返回其值
Status Delete(linkList Lint iElemType &e)
{
if(IsEmpty(L)==1)
return ERROR;
int j=1;
Position ps;
p = L;
while (p->next && j {
p = p->next;
j++;
}
if(!(p->next)|| j>i)
return ERROR;//第i个结点不存在
s=p->next;
p->next=s->next;//将s的后继赋值给p的后继
e = s->data;//将s结点中的数据给e
free(s);//释放s结点
return OK;
}
//除掉集合中重复的元素
Status AvoidList(linkList L)
{
if(IsEmpty(L)==1)
return ERROR;
ElemType ee1e2e3;
for(int i=1; i<=GetLength(L); i++)//以前一个元素的值为基准,让其后的每一个值与它比较。
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7777 2018-10-14 13:06 链式存储和线性存储实现\li
文件 8289 2018-12-19 23:36 链式存储和线性存储实现\Sqlist.cpp
目录 0 2018-12-22 15:59 链式存储和线性存储实现\
- 上一篇:FTP客户端 源代码
- 下一篇:链表实现学生管理
相关资源
- VisualStudioUninstaller vs卸载工具
- 组态王驱动开发包3.0.0.7(中文)
- 多窗口后台鼠标连点器
- 使用选择性重传协议实现UDP可靠通信
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- 用VC 编写的仿QQ聊天室程序源代码
- 外点法程序
- 外罚函数程序
- qt-电子点菜系统
- 推箱子及人工智能寻路C 源代码
- 自己写的航空订票系统c 版--数据结构
- 数据结构实验魔王语言
- MUSIC算法c 实现
- C 餐厅叫号系统(QT平)
- 国际象棋c 完整版
-
ob
jectARX给Auto CAD加工具条 - 画图程序MFC/VC/VC CRectTracker 串行化
- MFC网络编程实例
- c 课程设计 职工信息管理系统
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- 清华大学 c 郑莉 ppt课件
- c 程序判断离散数学中命题公式
- 多项式求和(数据结构C 版)
- vc 6.0开发的流程图编辑器
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- 用C 实现的对网络上的ARP数据包进行
- Microsoft基本类库 (MFC)(C 库)
评论
共有 条评论