马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct Node
{
int data; // 数据域
struct Node * pNext; // 指针域
}NODE, *PNODE; // NODE等价于struct Node,PNODE等价于struct Node *
PNODE create_list(void);
void traverse_list(PNODE pHead);
int main(void)
{
PNODE pHead = NULL; // 等价于struct Node pHead = NULL;
pHead = create_list(); // creast_list函数的功能:创建一个非循环单链表,并将头结点的地址赋给pHead
traverse_list(pHead);
return 0;
}
PNODE create_list(void)
{
int i;
int len; // 用来存放有效节点的个数
int val; // 用来临时存放用户输入的节点的值
// 分配了一个不存放有效数据的头结点
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if (NULL == pHead)
{
printf("内存分配失败,程序终止!\n");
exit(-1);
}
PNODE pTail = pHead;
pHead->pNext = NULL;
printf("请输入你所要生成的节点的个数:len = ");
scanf("%d", &len);
for (i = 0; i < len; ++i)
{
printf("请输入第%d的节点的值:", i+1);
scanf("%d", &val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
{
printf("内存分配失败,程序终止!\n");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}
return pHead;
} // end function PNODE creast_list
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;
while (NULL != p)
{
printf("%d ", p->data);
p = p->pNext;
}
printf("\n");
return; // 表示函数已结束
}
|