python用单链表写一个通讯录,包括添加,删除(可恢复),查找等基本功能

Python031

python用单链表写一个通讯录,包括添加,删除(可恢复),查找等基本功能,第1张

///////////list3.c实现链表的插入删除查找

#include

#include

#include

typedef

struct

LNode

//////////定义数据结构体

{

int

num

char

name[20]

struct

LNode*

next

}*Link

///////////定义一个指针类型

typedef

struct

{

Link

head,tail

int

len

}LinkList

LinkList

*gList

void

MenuInfo()

void

InputData(LinkList

*mList)

void

OutputData(LinkList

*mList)

void

InsertData(LinkList

*mList,int

n)

Link

SearchNode(LinkList

*mList,int

n)

void

DeleteData(LinkList

*mList,int

n)

void

main()

{

int

_choice

int

_quit=0

int

n=0

gList=(LinkList

*)malloc(sizeof(LinkList))

gList->head=gList->tail=NULL

do

{

MenuInfo()

scanf("%d",&_choice)

switch(_choice)

friend={ '小明':['001', '广州'],'小红':['002','深圳'],'小王':['003','北京']}

model=input("model:")

if model=='1':

print("好友添加:",end='')

new_friend=input("newfriend:name,number,address")

friend_n=list(new_friend.split(','))

friend[friend_n[0]] =friend_n[1:3] # 添加

# friend4=dict.fromkeys([friend_n[0]],friend_n[1:3])

print("friend: ", friend)

elif model=='2':

print("好友删除:",end='')

new_friend = input("name")

# del friend[ new_friend] # 删除键是'Name'的条目

try:

friend.pop(new_friend)

print("friend: ", friend)

except:

print("查无此人")

elif model=='3':

print("好友修改:", end='')

new_friend = input("name")

friend[new_friend]=list(input("number,address").split(','))

print("friend: ", friend)

else:

print("好友查询:", end='')

new_friend = input("name")

try:

print(new_friend,':', friend[new_friend])

except:

print("查无此人")

以上程序包含了整个流程,有删赠改查功能,还有利用异常处理的处理过程。

要求提的不是很明确,按照最简单的功能来做了。

只记录姓名和电话号码,没有做号码检验。也没有做保存功能。

import sys

last_id = 0

class Person:

    def __init__(self, name, phone):

        self.name = name

        self.phone = phone

        global last_id

        last_id += 1

        self.id = last_id

 

    def match(self, filter):

        return filter in self.name or filter in self.phone

 

class AddressBook:

    def __init__(self):

        self.people = []

 

    def new_person(self, name, phone=''):

        self.people.append(Person(name, phone))

 

    def find_person(self, id):

        for person in self.people:

            if  str(id) == str(person.id):

                return person

        return None

 

    def modify_person(self, id, name, phone):

        person = self.find_person(id)

        if person:

            person.name = name

            person.phone = phone

        else:

            print "person:", id, " not found"

 

    def delete_person(self, id):

        person = self.find_person(id)

        if person:

            self.people.remove(person)

 

    def  search(self, filter):

        return [person for person in self.people if person.match(filter)]

 

class Menu:

    def __init__(self):

        self.address_book = AddressBook()

        self.choices = {

            "1": self.show_people,

            "2": self.add_person,

            "3": self.remove_person,

            "4": self.modify_person,

            "5": self.search_person,

            "6": self.quit

        }

 

    def display_menu(self):

        print("""

Address Book Menu

1. Show all People

2. Add Person

3. Remove Person

4. Modify Person

5. Search Person

6. Quit

""")

 

    def run(self):

        while True:

            self.display_menu()

            choice = raw_input("Enter an option: ")

            action = self.choices.get(choice)

            if action:

                action()

            else:

                print("{0} is not a valid choice".format(choice))

 

    def show_people(self, people=None):

        if not people:

            people = self.address_book.people

        for person in people:

            print("{0}: {1} {2}".format(person.id, person.name, person.phone))

 

    def search_person(self):

        filter = raw_input("search for: ")

        people = self.address_book.search(filter)

        self.show_people(people)

 

    def add_person(self):

        name = raw_input("Enter a name: ")

        phone = raw_input("Enter his/her phone number: ")

        self.address_book.new_person(name, phone)

        print("{0} has been added.".format(name))

 

    def remove_person(self):

        id = raw_input("Enter his/her id: ")

        if id:

            self.address_book.delete_person(id)

 

    def modify_person(self):

        id = raw_input("Enter a person id: ")

        name = raw_input("Enter his/her name: ")

        phone = raw_input("Enter his/her phone: ")

        self.address_book.modify_person(id, name, phone)

 

    def quit(self):

        print("Thank you for using your address book today.")

        sys.exit(0)

 

Menu().run()