⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c09_07.c

📁 it can help you know C++ souce program quckily
💻 C
字号:
/*创建单向链表演示,其中函数 create()创建链表,其返回链表的头指针 */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define LEN sizeof(struct AddressList)

struct AddressList
{
	char	name[20];			/* 姓名 */
	char	telephone[12];		/* 电话 */
	char	e_mail[30];			/* Email地址 */
	struct AddressList  *next;			/* 指向下一结点 */
};

struct AddressList * create(void);		/* 创建链表,并返回表头指针 */

int main()
{
	struct AddressList  *h;
	h = create();

	return 0;
}

struct AddressList * create()		/* 创建链表,并返回表头指针 */
{
	struct AddressList  *head;		/* 表头 */
	struct AddressList  *p;			/* 新建结点 */
	struct AddressList  *tail;		/* 表尾结点 */

	head = NULL;		/* 还没有任何结点,表头为指向空 */
	p = (struct AddressList *)malloc(LEN);		/* 创建一个新结点p */
	tail = p;			/* 表尾p2也指向p */
	printf("请输入结点数据:\n");
	printf("     姓名:");
	gets(p->name);
	while(strcmp(p->name,"")!=0)	/* 假设name为空串表示输入结束 */
	{
		printf("     电话:");
		gets(p->telephone);
		printf("Email地址:");
		gets(p->e_mail);
		if (head==NULL)
			head = p;			/* 第一个新建结点是表头 */
		else
		    tail->next = p;		/* 原表尾的下一个结点是新建结点 */
		tail = p;				/* 新建结点成为表尾 */
		p = (struct AddressList *)malloc(LEN);	/* 新建一个结点 */
		printf("\n请输入下一个结点数据:\n");
		printf("     姓名:");
		gets(p->name);			/* 读入新建结点的通讯录数据 */
	}
	if (head==NULL)				/*未输入任何数据*/
		free(p); 
	else
	{
		free(p);				/* 对于num=0的结点,未加入链表,应删除其空间 */
		tail->next = NULL;		/* 输入结束,表尾结点的下一个结点为空 */
	}
	printf("建立链表过程结束\n");
	return (head);				/* 返回表头指针 */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -