# 基础

# 头文件

#include<stdio.h>

# 放在屁股暂停

system("pause");

# 结构体

# 定义

// 第一种
struct Product// 结构体名
{
 char cname// 成员列表
}product1,product2 ;
// 第二种
struct Product product1;
struct Product product2;

# 引用

// 引用
product1.cname="icebox"
// 或者
Struct Produc
{
 char cnam
}product1={“icebox"} ;
strcpy (product1->cname,"icebox");
stuct Product *pproduct;
pproduct=& product 1;
pproduct->product1;

# 链表

malloc 函数原型

void *malloc(unsigned int size);

// 在内存中动态的分配一块 SIZE 大小的内存空间。

calloc 函数原型

void *calloc(unsigned n,unsigned size);

// 在内存中动态分配 N 个长度为 SIZE 的连续内存空间数组

free 函数原型

void free(void *ptr);

// 使用由指针 ptr 指向的内存区,使部分内存区能被其他变量使用。

struct Student// 创建节点结构
{
	char cName[20];
	int iNumber;
	struct student* pNext;  // 指向下一个节点的指针
};
int iCount;				// 全局变量显示链表长度
struct Student *Create()
{
	struct Student* pHead=NULL; 		// 初始化链表头指针为空
	struct Student* pEnd,*pNew;
	iCount=0;
	pEnd=pNew=(struct Student*)malloc(sizeof(struct Student));	// 初始化链表长度
	printf(“please first enter Name,then Number\n”);
	scanf(%s”,&pNew-> cName);
	scanf(%d”,&pNew->iNumber);
while(pNew->iNumber!=0)
{
	iCount++;
	if(iCount==1)
	{
		pNew->pNext=pHead;		// 使得指向为空
		pEnd=pNew;				// 跟踪新加入的节点
		pHead=pNew;				// 头指针指向首节点
}
else
{
pNew->pNext=NULL; 		// 新节点的指针为空
		pEnd->pNext =pNew;		// 原来的尾节点指向新节点
		pEnd =pNew;				//*pEnd 指向新节点
}
pNew=(struct Student*)malloc(sizeof(struct Student));// 再次分配节点内存空间
scanf(%s”,&pNew-> cName);
	scanf(%d”,&pNew->iNumber);
}
free(pNew); // 释放没有用到的空间
return pHead;
}
// 输出链表
void Print(struct Student *pHead)
{
	struct Student *pTemp;			// 循环所用的临时指针
	int iIndex=1;					// 表明链表中节点的序号
	printf(“ –the list has %d members: ---\n\n”,iCount);
	pTemp=pHead;				// 得到首节点的地址
	while(pTemp!=NULL)
	{
		printf(“the No.%d stuednt is :\n”,iIndex);
		printf(“the name is %s\n”,pTemp->cName);
		printf(“the number is :%d\n\n”,pTemp->iNumber);
		pTemp =pTemp->pNext;		// 临时指针移动到下一个节点
		iIndex++;
}
}
// 主函数
int main()
{
	struct Student *pHead; 	// 定义头节点
	pHead =Create();		// 创建结点
Print(pHead);			// 输入链表
return 0;				
}
更新于
-->