链表的运算(01)
|
|
发表日期:2003年4月8日 作者:C语言之家搜集整理 已经有3901位读者读过此文 |
|
1.设计一个程序将输入的数据建立成链表、输出链表数据并在程序结束后释放。 2.设计一个查找链表中的数据的程序
1.设计一个程序将输入的数据建立成链表、输出链表数据并在程序结束后释放。 解: 1)链表的建立:先声明一个首节点Head,并将Head->Next设为NULL。每输入一个数据就声明一个新节点New,把New->Next设为NULL,并且链接到之前列表的尾端。 2)链表数据的输出:先将Pointer节点的指针指向第一个节点,将Pointer节点(即第一个节点)的数据输出。然后再将Pointer节点的指针指向Pointer指针的的指针(即下一节点),将pointer节点(即第一节点)的数据输出。重复执行此步聚直到Pointer指针指向NULL为止。 3)链表的释放:先将Pointer节点的指针指向第一个节点,然后再将首节点设为首节点的指针(即下一节点)。将Pointer节点(即第一节点)释放。重复执行此步聚直到首节点的指针指向NULL为止。 程序代码如下: #include<stdlib.h> #include<stdio.h> #define Max 10 struct List /*节点结构声明*/ { int Number; char Name[Max]; struct List *Next; }; typedef struct List Node; typedef Node *Link; /*释放链表*/ void Free_List(Link Head) { Link Pointer; /*节点声明*/ while(Head!=NULL) /*当节点为NULL,结束循环*/ { Pointer=Head; Head=Head->Next; /*指向下一个节点*/ free(Pointer); } } /*输出链表*/ void Print_List(Link Head) { Link Pointer; /*节点声明*/ Pointer=Head; /*Pointer指针设为首节点*/ while(Pointer!=NULL) /*当节点为NULL结束循环*/ { printf("##Input Data##\n"); printf("Data Number: %d\n",Pointer->Number); printf("Data Name: %s\n",Pointer->Name); Pointer=Pointer->Next; /*指向下一个节点*/ } } /*建立链表*/ Link Create_List(Link Head) { int DataNum; /*数据编号*/ char DataName[Max]; /*数据名称*/ Link New; /*节点声明*/ Link Pointer; /*节点声明*/ int i; Head=(Link)malloc(sizeof(Node)); /*分配内存*/ if(Head==NULL) printf("Memory allocate Failure!\n"); /*内存分配夫败*/ else { DataNum=1; /*初始数据编号*/ printf("Please input the data name:"); scanf("%s",DataName); Head->Number=DataNum; /*定义首节点数据编号*/ for(i=0;i<=Max;i++) Head->Name[i]=DataName[i]; Head->Next=NULL; Pointer=Head; /*Pointer指针设为首节点*/ while(1) { DataNum++; /*数据编号递增*/ New=(Link)malloc(sizeof(Node)); /*分配内存*/ printf("Please input the data Name:"); scanf("%s",DataName); if(DataName[0]=='0') /*输入0则结束*/ break; New->Number=DataNum; for(i=0;i<Max;i++) { New->Name[i]=DataName[i]; } New->Next=NULL; Pointer->Next=New; /*将新节点串连在原列表尾端*/ Pointer=New; /*列表尾端节点为新节点*/ } } return Head; } /*主程序*/ void main() { Link Head; /*节点声明*/ Head=Create_List(Head); /*调用建立链表函数*/ if(Head!=NULL) { Print_List(Head); /*调用输出链表数据函数*/ Free_List(Head); /*调用释放链表函数*/ } }
运行结果如下:
|
|
posted on 2006-07-17 22:53
小力力力 阅读(2644)
评论(0) 编辑 收藏 所属分类:
C/C++