链表是c语言中比较难掌握的一个知识点,不要只是看看程序就觉得懂了,如果不进行实践,其实很难发现其中所存在的盲点。所以,在学数据结构的时候,即使比较难,也要静下心来将程序自己敲出来。切忌眼高手低。
通过链表管理图书的程序,只是进行简单的输入和输出,并没有进行插入和删除。性对来说比较简单。下面是我的链表的程序。
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct node
{
int num;
float price;
struct node *pNext;
}Node,*pNode;
void traverse(pNode );
pNode creat_list(void);
int main()
{
pNode pHead =NULL;
pHead = creat_list();
traverse(pHead);
return 0;
}
pNode creat_list(void)
{
pNode pHead = (pNode)malloc(sizeof(Node));
if(pHead == NULL)
{
printf("节点分配失败\n");
exit(-1);
}
pNode pTail = pHead;
pTail->pNext = NULL;
int i = 0;
int number;
float Price;
int len;
printf("请输入创建的图书个数\n");
scanf("%d",&len);
pNode pNew = NULL;
for(i = 0;i <len;i++ )
{
pNew = (pNode)malloc (sizeof(Node));
if(pNew == NULL)
{
printf("节点分配失败\n");
exit(-1);
}
printf("请输入图书的编号\n");
scanf("%d",&number);
pNew->num = number;
printf("请输入图书的价格\n");
scanf("%f",&Price);
pNew->price = Price;
pTail->pNext = pNew;
pNew-> pNext = NULL;
pTail = pNew;
}
return pHead;
}
void traverse(pNode pHead)
{
pNode p = pHead->pNext;
while(p != NULL)
{
printf("图书的编号: %d\n",p->num);
printf("图书的价格: %3.1f\n",p->price);
p = p->pNext;
}
printf("\n");
}