学C语言第一个做像样点的项目,链表一定是其中一个。哈哈 唉 谁让咱的战斗力只有5 呢。
链表的中心思想就创建一个个节点,这些节点在内存中并不像数组是连续分配的,从逻辑上说 链表是分散的,就像是分散的点,但每个点里保存了下一个点的地址。
看代码 : 无表头的链表
/mnt/hgfs
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
typedef struct ST
{
char name[20];
int age;
struct ST * next;
}P;
P * CreatNode();
void PrintNode( P * Phead);
P * HeadNode=NULL;
P * EndNode=NULL;
/***************涓诲嚱鏁?*******************/
int main()
{
int x=3;
P *head=NULL;
printf("\033c");
while(x--)
{
CreatNode();
}
head=HeadNode; //鎸囬拡鎸囧悜闂瑕佹敞鎰?锛屼笉鑳芥槸涓€寮€濮嬪氨鏄寚鍚戠姸鎬?娌$敤鐨?涓嶄細闅忕潃鏀瑰彉鑰屾敼鍙? PrintNode(head);
return 0;
}
/*************************************/
/********************创建链表 **************/
P * CreatNode()
{
{
P * NewNode=(P *)malloc(sizeof(P));
if(NewNode==NULL)
{
perror("malloc");
exit(-1);
}
if(HeadNode==NULL)
{
HeadNode=NewNode;
EndNode=HeadNode;
EndNode->next=NULL;
}
else{
EndNode->next=NewNode;
EndNode = NewNode;
EndNode->next=NULL;
}
printf("\033c");
printf("input your name\n");
scanf("%s",EndNode->name);
printf("\n");
printf("input your age\n");
scanf("%d",&EndNode->age);
}
return HeadNode;
}
/*****************************************/
/*****************链表打印***************/
void PrintNode( P * Phead)
{
P * str = NULL;
str = Phead;
while(str!=NULL)
{
printf(" my name is %s age is %d\n",str->name,str->age);
str=str->next;
}
}
/************************************/