自定义顺序表,实现顺序表按照位置插入和删除功能
#include <stdio.h>
#define MAX 30
typedef struct
{
char name[20];
int age;
int score;
} stu;
typedef struct
{
stu data[MAX];
int len;
} list;
void input_stu(list *L, int n)
{
printf("输入学生信息:\n");
for (int i = 0; i < n; i++)
{
printf("输入第%d个学生的姓名,年龄,分数:", i + 1);
scanf("%s%d%d", L->data[i].name, &L->data[i].age, &L->data[i].score);
L->len++;
}
}
void output_stu(list L)
{
printf("总共有%d个学生\n", L.len);
for (int i = 0; i < L.len; i++)
{
printf("姓名:%s, 年龄:%d, 分数:%d\n", L.data[i].name, L.data[i].age, L.data[i].score);
}
}
void insert_pos(list *L)
{
int pos;
stu e = {"liu",15,87};
printf("请输入你要插入的位置:");
scanf("%d",&pos);
//位置小于1,大于len+1,数组溢出,表空
if(pos<1||pos>L->len+1||L->len==MAX||L==NULL)
{
printf("插入失败\n");
}
else
{
int i;
for(i = L->len-1;i>=pos-1;i--)
{
L->data[i+1] = L->data[i];
}
L->data[pos-1] = e;
L->len++;
}
}
void dele_pos(list *L)
{
int pos;
printf("请输入你要删除的位置:");
scanf("%d",&pos);
if(NULL==L||pos<1||pos>L->len||L->len==0)
{
printf("删除失败\n");
}
else
{
int i;
for(i = pos-1;i<L->len;i++)
{
L->data[i] =L->data[i+1];
}
L->len--;
}
}
int main(int argc, const char *argv[])
{
list L;
L.len=0;
input_stu(&L, 3);
output_stu(L);
insert_pos(&L);
output_stu(L);
dele_pos(&L);
output_stu(L);
return 0;
}
运行结果:
输入学生信息:
输入第1个学生的姓名,年龄,分数:hu 56 89
输入第2个学生的姓名,年龄,分数:xd 35 78
输入第3个学生的姓名,年龄,分数:we 54 75
总共有3个学生
姓名:hu, 年龄:56, 分数:89
姓名:xd, 年龄:35, 分数:78
姓名:we, 年龄:54, 分数:75
ubuntu@ubuntu:8_8$ gcc zy.c
ubuntu@ubuntu:8_8$ ./a.out
输入学生信息:
输入第1个学生的姓名,年龄,分数:li 14 67
输入第2个学生的姓名,年龄,分数:liu 15 98
输入第3个学生的姓名,年龄,分数:hu 14 27
总共有3个学生
姓名:li, 年龄:14, 分数:67
姓名:liu, 年龄:15, 分数:98
姓名:hu, 年龄:14, 分数:27
请输入你要插入的位置:2
总共有4个学生
姓名:li, 年龄:14, 分数:67
姓名:liu, 年龄:15, 分数:87
姓名:liu, 年龄:15, 分数:98
姓名:hu, 年龄:14, 分数:27
请输入你要删除的位置:3
总共有3个学生
姓名:li, 年龄:14, 分数:67
姓名:liu, 年龄:15, 分数:87
姓名:hu, 年龄:14, 分数:27
结构体初始化:
- 使用.(点)运算符进行成员变量赋值
struct Person {
char name[20];
int age;
float height;
};
int main() {
struct Person p1;
p1.name = "John";
p1.age = 25;
p1.height = 1.75;
return 0;
}
- 使用{}(大括号)进行成员变量赋值:
struct Person { char name[20]; int age; float height; }; int main() { struct Person p1 = {"John", 25, 1.75}; return 0; }