2021-05-27数据结构从零开始代码实现

数据结构代码实现 (摸索)

顺序表

通常用数组来描述数据结构中顺序存储结构(顺序表是基于数组实现的)。
疑惑1:
数据结构书本上的伪代码

顺序表的存储结构:

#idefine MAXSIZE 100
typedef struct
{
	ElemType *elem;
	int length;
}SqList;

顺序表的初始化:

Status InitList(SqList &L)
{//构造一个空的顺序表L
	L.elem=new ElemType[MAXSIZE];
	if(!L.elem) exit(OVERFLOW)
	L.length =0;
	return 0;

}

如何在编译器实现这些伪代码?它需不需要int main()?以及在什么位置? 如何创建的类似1 2 3 4 5 这样的顺序表?怎么输入输出像图书管理信息到顺序表?

#include<iostream>
using namespace std;
#define MAXSIZE 100
typedef struct
{
	int data[MAXSIZE];
	int length; 
}SqList;
int IniList(SqList &L)
{
	L.length = 0;
	return 0;
}

void ListInsert(SqList &L,int i,int e)
{
	for(int j=L.length;j>=i;j--)
		L.data[j]=L.data[j-1];
	L.data[i-1]= e ;
	L.length++ ;
	
}
int main()
{
	SqList L;  //声明一个顺序表 
	IniList(L); //初始化一个顺序表 
	ListInsert(L,1,1); //插入元素 
	ListInsert(L,2,2);
	ListInsert(L,3,3);
	ListInsert(L,4,4);
	cout<<"元素总数" <<L.length<<endl  ;
	cout<<"第3个元素为 "<<L.data[2]<<endl;
	return 0;
}
/*上面的代码是用插入元素的函数从data[0]也就是第一个元素开始插入,形成一个有4个元素的顺序表。*/

运行结果:

在这里插入图片描述

未解决疑问:像图书信息在结构体中有书名、价钱、编号等信息,一个图书结构体是一个顺序表的元素,那在创建这个图书信息的顺序表时,该怎么把图书的这些信息输入到顺序表中?

单链表(结点方式)

输出链表长度
<1>

#include<iostream>
using namespace std;
//typedef int DataType;
#define Status int
#define ElemType int
typedef struct LNode
{
    ElemType data;                 //当前节点中所保存的元素
    struct LNode* next;    //指向链表中下一个结点

}*LinkList, LNode;
Status InitList(LinkList &L)
{
	L= new LNode ;
	L ->next = NULL;
	return 1;
}

int ListLength(LinkList L)
{
	LinkList p=L;
	int sum =0;
	while (p)
	{
		sum++;
		p = p-> next;
	}
	return sum-1;
}
int main()
{
	LinkList L;
	InitList(L);
	cout << ListLength(L) << endl;
	return 0;
}

<2>

#include<iostream>
using namespace std;

typedef struct LNode
{
	int data;
	struct LNode*next;
}*LinkList,LNode;
int InitList(LinkList &L)
{
	L=new LNode ;
	L->next = NULL;
	return 1;
}

int ListLength( LinkList L)
{
	LinkList p=L;
	int sum=0;
	while(p)
	{
		sum++;
		p = p->next; 
	}
	return sum-1;
}
int main()
{
	LinkList L;
	InitList(L);
	cout << ListLength(L) <<endl;
	return 0;
} 
/*<1>和<2> 同样的效果,区别在于在代码中定义函数是<1>是用define定义 Status 、 ElemType的类型为 int  
 <2>中直接在函数前生命返回值类型为int  如 int ListLength(LinkList L)
*/

在这里插入图片描述

单链表的插入,下次补充。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值