顺序线性表
定义:线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。
线性表的顺序存储的结构代码:
#ifndef __SQLIST_H
#define __SQLIST_H
#include <stdlib.h>
#include <stdio.h>
#define MAX_SIZE 100
#define OK 1
#define ERROR 0
typedef int states;
typedef char ElementType;
typedef struct sqlist{
ElementType data[MAX_SIZE];
int size;
}SqList;
states InitSqList(SqList * sqlist);
states InsertSqList(SqList *sqlist, int pos, char ch);
states DeleteSqList(SqList *sqlist, int pos, char *ch);
states GetSqListelem(SqList *sqlist,int pos, char *ch);
void PrintfSqList(SqList *sqlist);
#endif
顺序存储结构的相关操作代码
#include "SqList.h"
states InitSqList(SqList * sqlist)
{
int i = 0;
sqlist->size = 0;
for(i = 0;i < MAX_SIZE;i++){
sqlist->data[i] = 0;
}
return OK;
}
states InsertSqList(SqList *sqlist, int pos, char ch)
{
int i;
if(sqlist->size == MAX_SIZE)
return ERROR;
if(pos < 1 || pos > sqlist->size + 1)
return ERROR;
for(i = sqlist->size;i >= pos;i--){
sqlist->data[i] = sqlist->data[i-1];
}
sqlist->data[pos-1] = ch;
sqlist->size++;
return OK;
}
states DeleteSqList(SqList *sqlist, int pos, char *ch)
{
int i;
if(sqlist->size == 0)
return ERROR;
if(pos < 1 || pos > sqlist->size)
return ERROR;
*ch = sqlist->data[pos-1];
for(i = pos;i <= sqlist->size - 1;i++){
sqlist->data[i-1] = sqlist->data[i];
}
sqlist->size--;
return ERROR;
}
states GetSqListelem(SqList *sqlist,int pos, char *ch)
{
if(sqlist->size == 0)
return ERROR;
if(pos < 1 || pos > sqlist->size)
return ERROR;
*ch = sqlist->data[pos-1];
return OK;
}
void PrintfSqList(SqList *sqlist)
{
int i;
printf("顺序线性表中的元素:\n");
for(i = 0;i < sqlist->size;i++){
printf("%c ",sqlist->data[i]);
}
printf("\n");
}
编程笔记:
- 向线性表中插入元素:
1、判断线性表是否已满
2、判断输入pos变量的范围,可以当前线性表中最后一个元素的后面插入一个新的数据,所以 pos = sqlist->size +1 。
3、位于pos位置后面的元素,向后移动一位。
公式:data[i] = data[i-1];
判断条件可以根据公式去决定 :(i = sqlist->size;i >= pos;i–)
注:如果插入的在线性表最后元素的后面的话,不用移动元素直接插入数据。
pos = sqlist->size + 1 不进入for循环
4、插入元素。 - 从线性表中删除元素:
1、判断线性表是否为空
2、判断输入pos变量的范围,(1 ~sqlise->size)。
3、获取删除元素。
4、位于pos位置后面的元素,向前移动一位。
公式:data[i-1] = data[i];
判断条件可以根据公式去决定 :(i = pos;i <= sqlist->size -1;i++)
注:如果删除线性表最后的元素,不用移动元素直接删除数据。
pos = sqlist->size 不进入for循环
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)