顺序表的基本操作

来源:互联网 发布:恒生直销软件 编辑:程序博客网 时间:2024/06/06 14:10

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

一、【实验目的】

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

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

二、【实验内容】

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;}

0 0