实现手机通讯录的新建、插入、删除与查询(要求用排序顺序表、排序单链表两种存储结构都要完成)
时间: 2023-06-19 08:05:01 浏览: 53
1. 排序顺序表实现
```python
class Contact:
def __init__(self, name, phone):
self.name = name
self.phone = phone
class ContactList:
def __init__(self):
self.contacts = []
# 新建联系人
def add_contact(self, name, phone):
contact = Contact(name, phone)
self.contacts.append(contact)
self.contacts.sort(key=lambda x: x.name)
# 插入联系人
def insert_contact(self, index, name, phone):
contact = Contact(name, phone)
self.contacts.insert(index, contact)
self.contacts.sort(key=lambda x: x.name)
# 删除联系人
def delete_contact(self, name):
for contact in self.contacts:
if contact.name == name:
self.contacts.remove(contact)
# 查询联系人
def search_contact(self, name):
for contact in self.contacts:
if contact.name == name:
return contact.phone
return "联系人不存在"
```
2. 排序单链表实现
```python
class Node:
def __init__(self, name, phone):
self.name = name
self.phone = phone
self.next = None
class ContactList:
def __init__(self):
self.head = None
# 新建联系人
def add_contact(self, name, phone):
node = Node(name, phone)
if not self.head:
self.head = node
else:
cur = self.head
pre = None
while cur and cur.name < name:
pre = cur
cur = cur.next
if not pre:
node.next = self.head
self.head = node
else:
pre.next = node
node.next = cur
# 插入联系人
def insert_contact(self, index, name, phone):
node = Node(name, phone)
if not self.head:
self.head = node
else:
cur = self.head
pre = None
i = 0
while cur and i < index:
pre = cur
cur = cur.next
i += 1
if not pre:
node.next = self.head
self.head = node
else:
pre.next = node
node.next = cur
# 删除联系人
def delete_contact(self, name):
cur = self.head
pre = None
while cur and cur.name != name:
pre = cur
cur = cur.next
if not pre:
self.head = cur.next
else:
pre.next = cur.next
# 查询联系人
def search_contact(self, name):
cur = self.head
while cur and cur.name != name:
cur = cur.next
if not cur:
return "联系人不存在"
else:
return cur.phone
```
以上是用 Python 实现的通讯录排序顺序表、排序单链表。你可以根据需要进行改进和优化。