通讯录项目整理(链表法)

本文介绍了我通讯录项目各个功能的编写过程以及大体思路。

1.头文件以及结构体的定义

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef char Elemtype;
typedef char Status;
typedef struct Node
{
	Elemtype name[10];
	Elemtype tel[12];
	struct Node *next;
}Node,*Address_list;

2.初始化过程

    申请头结点,使用malloc函数为头结点分配空间,让头指针指向头结点,头结点的指针域指向NULL。

    为什么要申请头结点?

    为了保证处理第一个节点(非头结点)和后面节点时候设计的算法相同,实现程序的高效性。

/************初始化****************/
Status Initaddress(Address_list *aptr)
{
	Node *p=(Node *)malloc(sizeof(Node));//申请头结点
	if(p==NULL)
		return ERROR;
	p->next=NULL;
	*aptr=p;
	return OK;
}

2.插入新节点(实现新建联系人功能)

  第一步:申请一个新结点用于记录新联系人的信息

                   使用malloc函数,需要强制转换。

  第二步:将这个新结点插入到链表的最后

                   新申请一个tmp指针指向tmp头结点,用while语句是tmp指针后移,直到链表尾部,即tmp->next的值为NULL时,进行                如下操作:

                   将tmp指向新申请的结点,新节点的指针域指向NULL。

Status Insert(Address_list aptr,Elemtype e[],Elemtype f[])
{
	Node *p=(Node *)malloc(sizeof(Node));
	if(p==NULL)
	{
		printf("堆空间已满\n");
		return ERROR;
	}
	strcpy(p->name,e);
	strcpy(p->tel,f);
	Address_list tmp=aptr;
	while(tmp->next!=NULL)
	{	
		tmp=t
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值