#include "stdafx.h"
#include <stdlib.h>
//声明函数
//创建一个链表
struct Node * create_list(void);
//遍历链表中的内容
void traverse_list(struct Node *);
//链表的结构体
struct Node
{
//数据域
int data;
char data2;
//指针域
struct Node * pNext;
};
//主函数
int main(int argc, _TCHAR* argv[])
{
/*
2014年5月20日 20:30:48 链表
*/
//声明一个链表指针
struct Node * pHead = NULL;
//获取链表
pHead = create_list();
//循环输出链表的内容
traverse_list(pHead);
printf("\n");
system("pause");
return 0;
}
//创建一个链表
struct Node * create_list(void){
int len;//用来存放节点的个数
int val;//用于存放节点的值
//头节点
struct Node * pHead = (struct Node*)malloc(sizeof(struct Node));
if (NULL == pHead)
{
printf("分配失败!程序终止");
exit(-1);//终止程序
}
struct Node * pTail = pHead;//首节点
pTail->pNext = NULL;
printf("请输入需要生成的链表节点个数:len=");
scanf_s("%d", &len);
for (int i = 0; i < len; i++)
{
printf("请输入第%d个节点的值:", i + 1);
scanf_s("%d", &val);
struct Node * pNew = (struct Node*)malloc(sizeof(struct Node));
if (NULL == pNew)
{
printf("分配失败!程序终止");
exit(-1);
}
pNew->data = val;//为当前节点赋值
pTail->pNext = pNew;//为上一个节点的指针域赋值
pNew->pNext = NULL;//清空当前节点的指针域,如果当前为NULL。当前节点为链表的最后一个值
pTail = pNew;//更新当前节点为:下一个节点的上一个节点;
}
return pHead;//返回的是头结点
}
//遍历链表中的内容
void traverse_list(struct Node * pHead){
struct Node * p = pHead->pNext;
printf("链表中的值为:");
while (NULL != p)
{
printf("%d ", p->data);
p = p->pNext;
}
}