顺序表的实现

                                       顺序表的实现

    我也是正在学链表,所以就按自己的想法把顺序表的基本实现功能写出来分享给大家, 希望对你有帮助。

1:头文件list.h

#ifndef _LIST_H_
#define _LIST_H_

#include<iostream.h>
#include<stdlib.h>
#define ElemType int
#define error -1

typedef struct List
{	
	size_t size;
	ElemType data[];
}List;

void Output();
void InitList(List *list);//初始化表
void PopList(List *list,ElemType x);//头插
void BackList(List *list,ElemType x); //尾插
void PopDelete(List *list); //头删
void BackDelete(List *list); //尾删
void DeleteList(List *list); //删除链表
int  Find(List *list,ElemType x); //查找
void Sort(List *list);  //排序
void InverseList(List *list);//翻转链表
void ShowList(List *list);//显示表

#endif
2:功能实现部分list.cpp
#include"list.h"

void Output()
{	
	cout<<"*******************************"<<endl;
	cout<<"* [1] PopList,   [2] BackList *"<<endl;
	cout<<"* [3] ShowList,  [4] PopDelete*"<<endl;
	cout<<"* [5] BackDelete [6] Find     *"<<endl;
	cout<<"* [7] InverseList[8] Sort     *"<<endl;
	cout<<"*******************************"<<endl;
	cout<<"请选择:";
}

void InitList(List *list)
{
	list->size=0;
}

void PopDelete(List *list)
{
	for(int i=0;i<list->size;i++)
	{
		list->data[i]=list->data[i+1];
	}
	list->size--;
}

void BackDelete(List *list)
{
	list->size--;
}

void DeleteList(List *list)
{
	list->size=0;
}

int  Find(List *list,ElemType x)
{
	for(int i=0;i<list->size;i++)
	{
		if(list->data[i]==x)
			return i;
	}
	return (error);
}

void Sort(List *list)
{
	for(int i=0;i<list->size-1;i++)
	{
		for(int j=0;j<list->size-1-i;j++)
		{
			if(list->data[j]>list->data[j+1])
			{
				int temp=list->data[j];
				list->data[j]=list->data[j+1];
				list->data[j+1]=temp;
			}
		}
	}
} 
void InverseList(List *list)
{
	int temp;
	int j=list->size-1;
	for(int i=0;i<list->size/2;i++,j--)
	{
		temp=list->data[i];
		list->data[i]=list->data[j];
		list->data[j]=temp;
	}
}


void PopList(List *list,ElemType x)
{
	list->data[list->size]=x;
	list->size++;
}
void BackList(List *list,ElemType x)
{
	for(int i=list->size;i>0;i--)
	{
		list->data[i]=list->data[i-1];
	}
	list->data[0]=x;
	list->size++;
}

void ShowList(List *list)
{
	for(int i=0;i<list->size;i++)
	{
		cout<<list->data[i]<<"-->";
	}
	cout<<"OVER"<<endl;
}
3:主函数main.cpp
#include"list.h"
void main()
{
	List mylist;
	InitList(&mylist);
	int pos=1;
	int Number;
	while(pos)
	{
		Output();
		cin>>pos;
		switch(pos)
		{
		case 1:
			cout<<"请输入数据,并以-1结束输入:";
			while(cin>>Number,Number!=-1)
			{
				PopList(&mylist,Number);
			}
			break;
		case 2:
			cout<<"请输入数据,并以-1结束输入:";
			while(cin>>Number,Number!=-1)
			{
				BackList(&mylist,Number);
			}		
			break;
		case 3:
			ShowList(&mylist);
			break;
		case 4:
			PopDelete(&mylist);
			break;
		case 5:
			BackDelete(&mylist);
			break;
		case 6:
			cout<<"请输入值:";
			cin>>Number;
			pos=Find(&mylist,Number);
			cout<<"寻找到的值:"<<mylist.data[pos]<<endl;
			break;
		case 7:
			InverseList(&mylist);
			break;
		case 8:
			Sort(&mylist);
			break;
		}
	}
}
注:这里的图片只显示一部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值