🎑定义一个顺序表
//创建静态线性表 typedef int DataType; typedef struct SeqList { DataType a[MAX]; int size; }SeqList;
🎑 初始化——置空顺序表
//初始化——置空顺序表 void SQList_Init(SeqList* p) { p->size = 0; }
🎑创建一个顺序表
//创建一个顺序表 void SQList_Create(SeqList* p) { int n,i; printf("请输入元素的个数>\n"); scanf("%d", &n); printf("请依次输入元素>\n"); for (i = 0; i < n; i++) { scanf("%d", &p->a[i]); p->size++; } printf("\n"); }
🎑打印顺序表各结点的值
//打印顺序表各结点的值 void SQList_Print(SeqList* p) { int i = 0; for (i = 0; i < p->size; i++) { printf("%-3d", p->a[i]); } printf("\n"); }
🎊🎊 顺序表基本操作
🎃头插
//头插 void SQList_PushFront(SeqList* p,DataType x) { int i; if (p ->size == MAX) { printf("顺序表是满的!\n"); exit(-1); } for (i = p->size; i >= 0; i--) { p->a[i] = p->a[i - 1]; } p -> a[0] = x; p->size++; }
🎃尾插
//尾插 void Push_Back_SQList(SeqList* p,DataType x) { if (p->size == MAX) { printf("顺序表是满的!\n"); exit(-1); } p->a[p->size] = x; p->size++; }
🎃头删
//头删 void SQList_Pop_Front(SeqList* p) { int i; if (p->size == 0) { printf("顺序表是空的!\n"); exit(-1); } for (i = 1; i >= 0; i--) { p->a[i - 1] = p->a[i]; } p->size--; printf("\n"); }
🎃尾删
//尾删 void SQList_Pop_Back(SeqList* p) { p->size--;
🎊🎊查找
🎋查找第i个节点的值
//查找第i个节点的值(0,1...p->size-1) DataType SeqList_Get(SeqList* p,int i) { if (i < 0 || i >= p->size) { printf("指定位置的结点不存在~\n"); exit(-1); } return p ->a[i]; }
🎋查找值为x的结点
//查找值为x的结点 void SeqList_Find(SeqList* p,DataType x) { int i = 0; for (i = 0; i < p->size; i++) { if (p->a[i] == x) { printf("找到了!\n"); printf("下标为%d", i); } } }
🎋在主函数中实现
//查找第i个节点的值 printf("------查找第i个节点的值------\n"); printf("请输入查找的结点\n"); int i; scanf("%d", &i); printf("\n第%d个结点的值为%d\n", i,SeqList_Get(&s, i)); //查找值为a的结点 printf("------查找值为a的结点------\n"); int a; printf("请输入要查找的值>\n"); scanf("%d", &a); SeqList_Find(&s, a);
🎊🎊插入
🎋在第i个位置添加元素x
//插入—— 在第i个位置添加元素x void SeqList_Insert(SeqList* p, int i, DataType x) { int j; if (i <= 0 || i >= p->size) { printf("插入位置不在范围内!\n"); exit(-1); } if (p->size == MAX) { printf("线性表已满!\n"); exit(-1); } for (j = p->size; j > i; j--) p->a[j] = p->a[j-1]; p->a[i] = x; p->size++; }