// 顺序表.cpp: 定义控制台应用程序的入口点。
// 陈鹏20171126
#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#define MAXSIZE 1024
typedef int elemtype;
typedef struct sequlist{
elemtype data[MAXSIZE];
int length;
}SequList;
//初始化
SequList *Init() {
SequList *Link;
Link = (SequList *)malloc(sizeof(SequList)); //申请空间
return Link;
}
//插入数据 x为值 i为位置
int Add(SequList *List, int x,int i) {
if (i<0 || i>List->length) {
printf("ERROR\n");
return 0;
}
for (int j = List->length; j >= i; j--) {
List->data[j + 1] = List->data[j]; //位置往后挪一个
}
List->data[i] = x;
List->length++;
return 1;
}
//按位置查
int Fond(SequList *List,int i,int p) {
if(p==0)
printf("%d", List->data[i-1]);
else if(p==1){
for (int j = 0; j < List->length; j++) {
if (List->data[j] == i)
printf("你所查询的值位于%d\n", j+1);
}
}
return 1;
}
//删除
int Delets(SequList *List, int i, int p) {
if (p == 0) {
for (int j = i; j < List->length; j++) { // 从删除的位置开始后面的数据往前挪一个
List->data[j] = List->data[j + 1];
}
List->length--; //长度减一
}else if (p == 1) {
for (int j = 0; j < List->length; j++) { //遍历一遍找出 值 的位置
if (List->data[j] == i) {
for (int t = j; t < List->length; t++) {
List->data[t] = List->data[t + 1];
}
List->length--;
}
}
}
return 1;
}
//遍历
int Prints(SequList *List) {
for (int i = 0; i < List->length; i++) {
printf("%3d\n", List->data[i]);
}
return 1;
}
int main()
{
SequList *List;
List = Init();
List->length = 0;
Add(List, 10, 0);Add(List, 20, 0);Add(List, 30, 0);
Add(List, 60, 0);Add(List, 40, 1);Add(List, 70, 2);
Prints(List);
//查询
printf("请输入你需要查询的值\n输入0按位置查询\n输入1按值查询\n");
int p,i;
scanf_s("%d", &p);
printf("请输入值或位置\n");
scanf_s("%d", &i);
Fond(List, i, p);
//删除
printf("请输入你需要删除的值\n输入0按位置查询\n输入1按值查询\n");
scanf_s("%d", &p);
printf("请输入值或位置\n");
scanf_s("%d", &i);
Delets(List, i, p);
//删除后遍历
Prints(List);
return 0;
}
顺序表——c
最新推荐文章于 2024-07-03 01:36:03 发布