顺序表的基本操作

实验一   线性表的基本操作的实现与应用

一、【实验目的】

    掌握线性表的插入与删除等基本运算

掌握单链表的插入与删除等基本运算

二、【实验内容】

1、 调试顺序表、单链表的基本运算算法。

2、 有一个单链表的第一个节点指针为head,编程实现将该单链表逆置,即最后一个节点变成第一个节点,原来倒数第二个节点变成第二个节点,如此等等,在逆置中不能建立新的单链表。

3、 编写程序,将若干整数从键盘输入,以单链表形式存储起来,然后计算单链表中结点的个数(其中指针P指向该链表的第一个结点)。

键盘输入若干个整数,按输入数据逆序建立一个带头结点的单链表。

#include <iostream>
#include <stdio.h>
#define MAXSIZE 100/*顺序表的容量*/
using namespace std;
typedef char ElemType;
typedef struct
{
	ElemType data[MAXSIZE];	/*存放顺序表的元素*/
	int length;			   	/*顺序表的实际长度*/
} SqList;
void InitList(SqList &sq)	/*初始化线性表*/
{
	sq.length=0;
}
int GetLength(SqList sq)	/*求线性表长度*/
{
     return sq.length;
}
int InsElem(SqList &sq,ElemType x,int i) /*插入元素*/
{
   	int j;
   	if (i<1 || i>sq.length+1)			/*无效的参数i*/
       	return 0;
   	for (j=sq.length;j>i;j--)			/*将位置为i的结点及之后的结点后移*/
       	sq.data[j]=sq.data[j-1];
    	sq.data[i-1]=x;               	/*在位置i处放入x*/
   	sq.length++;                      	/*线性表长度增1*/
    	return 1;
}
int DelElem(SqList &sq,int i)	/*删除元素*/
{
   	int j;
   	if (i<1 || i>sq.length)        	/*无效的参数i*/
      	return 0;
   	for (j=i;j<sq.length;j++)     	/*将位置为i的结点之后的结点前移*/
     	sq.data[j-1]=sq.data[j];
   	sq.length--;                   	/*线性表长度减1*/    	return 1;
}
void DispList(SqList sq)	/*输出线性表*/
{
   	int i;
   	for (i=1;i<=sq.length;i++)
        	cout<<sq.data[i-1];
   cout<<endl;
}
int main()
{
    SqList A;
    InitList(A);
	InsElem(A,'2',1);	/*插入元素*/
	InsElem(A,'4',2);
	InsElem(A,'1',3);
	InsElem(A,'5',4);
	InsElem(A,'6',5);
	InsElem(A,'7',6);
	printf("线性表A:");DispList(A);
	cout<<"删除线性表中的第3个元素后:"<<endl;
	DelElem(A,3);DispList(A);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值