用c语言实现:在{(王一,18986112501),(王二,18986112502),(王三,18986112503)}通讯录顺序表,顺序表中第4个位置插入一个元素(王四,18986112504),并输出该顺序表中各个元素。
时间: 2024-10-14 09:04:07 浏览: 26
王三学生预警信息表1906271111111111131
在C语言中,由于数组的大小是固定的,不能直接在中间位置插入元素。不过我们可以先将后面的元素向后移动一位,然后在空出来的位置插入新的元素。以下是实现这个功能的代码:
```c
#include <stdio.h>
#include <string.h> // 为了使用strlen函数获取字符串长度
// 定义结构体表示联系人信息
typedef struct {
char name[20];
int phone_number;
} Contact;
// 功能:在给定的联系人顺序表中插入一个元素
void insertElement(Contact* contacts, int index, const char* newName, int newPhone) {
if (index >= sizeof(contacts) / sizeof(contacts[0])) {
printf("插入索引超出范围!\n");
return;
}
// 移动后面的所有元素到右边
memmove(&contacts[index+1], &contacts[index], (sizeof(contacts) - index) * sizeof(Contact));
// 插入新元素
strcpy(contacts[index].name, newName);
contacts[index].phone_number = newPhone;
}
int main() {
// 初始联系人数据
Contact contacts[3] = {
{"王一", 18986112501},
{"王二", 18986112502},
{"王三", 18986112503}
};
int indexToInsert = 3; // 插入位置,从0开始计数
// 插入新元素
insertElement(contacts, indexToInsert, "王四", 18986112504);
// 输出顺序表中的所有元素
for (int i = 0; i < sizeof(contacts) / sizeof(contacts[0]); i++) {
printf("姓名:%s, 电话号码:%d\n", contacts[i].name, contacts[i].phone_number);
}
return 0;
}
```
运行此程序后,你会看到原来的联系人列表以及新添加的"王四"的元素。
阅读全文