使用C语言以及数据结构知识采用线性链表方式编写c程序管理通讯录。通过键入数字选择增加、删除、修改联系人信息等功能。
时间: 2024-10-18 10:22:14 浏览: 2
在C语言中,我们可以使用结构体定义联系人(Contact),并且利用链表作为数据结构来存储和操作通讯录。首先,创建一个Contact节点:
```c
typedef struct {
char name[50];
char phone_number[20];
struct Node* next;
} Contact, *Node;
```
然后,我们需要实现链表的基本操作:
1. 初始化链表:
```c
void createList() {
Node newNode = (Node)malloc(sizeof(Contact));
newNode->name = "";
newNode->phone_number = "";
newNode->next = NULL;
head = newNode;
}
```
2. 添加联系人(例如通过数字索引插入):
```c
void addContact(int position, char* name, char* phone_number) {
Node newNode = (Node)malloc(sizeof(Contact));
newNode->name = name;
newNode->phone_number = phone_number;
newNode->next = NULL;
if(position == 0) {
newNode->next = head;
head = newNode;
} else {
Node current = head;
int i;
for(i = 0; i < position - 1 && current != NULL; i++) {
current = current->next;
}
if(current != NULL) {
newNode->next = current->next;
current->next = newNode;
} else {
printf("Invalid position.\n");
}
}
}
```
3. 删除联系人:
```c
void deleteContact(int position) {
if(head == NULL) return;
if(position == 0) {
Node temp = head;
head = head->next;
free(temp);
} else {
Node current = head, previous = NULL;
int i;
for(i = 0; i < position - 1 && current != NULL; i++) {
previous = current;
current = current->next;
}
if(current != NULL) {
previous->next = current->next;
free(current);
} else {
printf("Invalid position.\n");
}
}
}
```
4. 修改联系人信息:
```c
void modifyContact(int position, char* name, char* phone_number) {
if(head == NULL || position <= 0) return;
Node current = head;
for(int i = 0; i < position - 1; i++) {
current = current->next;
}
if(current != NULL) {
strcpy(current->name, name);
strcpy(current->phone_number, phone_number);
} else {
printf("Invalid position.\n");
}
}
```
用户界面部分可以设计成命令行交互的形式,允许用户输入数字选择相应的功能。
阅读全文