顺序表

来源:互联网 发布:刷花呗的淘宝店铺 编辑:程序博客网 时间:2024/06/16 11:15
/**顺序表上的基本操作*/#include <iostream>using namespace std;#define MAX_LIST_SIZE100typedef int DataType;typedef struct{DataType data[MAX_LIST_SIZE];int length;}SeqList;//顺序表的基本运算void InitList(SeqList* L);bool InsertNode(SeqList* L, DataType x, int i);//将结点x插入L顺序表的第i个结点位置上bool DeleteNode(SeqList* L, int i);//从L顺序表中删除第i个结点bool GetNode(SeqList* L, int i, DataType* pDT);//得到指定位置的元素,并存入pDT中void ClearList(SeqList* L);//清空表bool IsEmpty(SeqList* L);//判断表是否为空int GetListLength(SeqList* L);//获得L顺序表的长度void PrintList(SeqList* L);//打印表中元素int main(){//SeqList  cout<<"SeqList test"<<endl;SeqList l;InitList(&l);for (int i = 0;i < 10; i++){InsertNode(&l, i, i+1);}PrintList(&l);cout << "SeqList Length= " << GetListLength(&l) <<endl;cout<<"after delete pos=5:"<<endl;DeleteNode(&l, 5);PrintList(&l);cout << "SeqList Length= " << GetListLength(&l) <<endl;cout<<"after clear:"<<endl;  ClearList(&l);cout<<"mySeqList is empty? ["<<(IsEmpty(&l) ? "Y" : "N")<<"]"<<endl;return 0;}void InitList(SeqList* L){L->length = 0;}bool InsertNode(SeqList* L, DataType x, int i){if (L->length >= MAX_LIST_SIZE)return false;//顺序表已经满了if (i < 1 || i > L->length+1)return false;//指定的添加位置错误for (int j = L->length; j > i-1; j--){L->data[j] = L->data[j-1];}L->data[i-1] = x;L->length++;return true;}bool DeleteNode(SeqList* L, int i){if (i < 1 || i > L->length)return false;//指定的添加位置错误for (int j = i; j < L->length;j++){L->data[j-1] = L->data[j];}L->length--;return true;}bool GetNode(SeqList* L, int i, DataType* pDT){if (i < 1 || i > L->length)return false;//指定的添加位置错误*pDT = L->data[i-1];return true;}void ClearList(SeqList* L){L->length = 0;}bool IsEmpty(SeqList* L){return (L->length == 0);}int GetListLength(SeqList* L){return L->length;}void PrintList(SeqList* L){for (int i = 0; i < L->length; i++){cout<<L->data[i]<<" ";}cout<<endl;}

原创粉丝点击