链表源代码(C语言实现)
2015-07-19 14:23
295 查看
源代码(C语言实现)
①.构造链表节点
typedef struct Node //一个单独的节点
{
int data;//数据域
struct Node * pNext;//指针域
}NODE,* PNODE;
②.链表的初始化
PNODE init_list()
{
int len ;//链表的长度
int i;//循环开关
int val;//节点的值
PNODE pHead = (PNODE)malloc(sizeof(NODE));//造出头结点
if (NULL==pHead)
{
printf("链表动态分配失败!程序终止!\n");
exit(-1);
}
else
{
printf("请输入要创建链表的长度len=");
scanf("%d",&len);
if (0==len)
{
pHead->pNext = NULL;
return pHead; //对空链表的处理
}
if (len<0) //对长度为负数的处理
{
printf("链表的长度不能为负数!\n");
exit(-1);
}
PNODE pTail = pHead;//pTail指向的是尾节点
pTail->pNext = NULL;
for (i=0;i<len;i++)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));//造出新的节点
printf("请输入第%d个节点的数值val =",i+1);
scanf("%d",&val);
pNew->data = val; //赋值
pTail->pNext = pNew; //连接新的节点
pTail = pNew; //pTail后移
}
pTail->pNext = NULL;//最后一个节点的指针域必须为空
return pHead; //返回头结点以用来表示整个链表
}
}
①.构造链表节点
typedef struct Node //一个单独的节点
{
int data;//数据域
struct Node * pNext;//指针域
}NODE,* PNODE;
②.链表的初始化
PNODE init_list()
{
int len ;//链表的长度
int i;//循环开关
int val;//节点的值
PNODE pHead = (PNODE)malloc(sizeof(NODE));//造出头结点
if (NULL==pHead)
{
printf("链表动态分配失败!程序终止!\n");
exit(-1);
}
else
{
printf("请输入要创建链表的长度len=");
scanf("%d",&len);
if (0==len)
{
pHead->pNext = NULL;
return pHead; //对空链表的处理
}
if (len<0) //对长度为负数的处理
{
printf("链表的长度不能为负数!\n");
exit(-1);
}
PNODE pTail = pHead;//pTail指向的是尾节点
pTail->pNext = NULL;
for (i=0;i<len;i++)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));//造出新的节点
printf("请输入第%d个节点的数值val =",i+1);
scanf("%d",&val);
pNew->data = val; //赋值
pTail->pNext = pNew; //连接新的节点
pTail = pNew; //pTail后移
}
pTail->pNext = NULL;//最后一个节点的指针域必须为空
return pHead; //返回头结点以用来表示整个链表
}
}
相关文章推荐
- NYOJ 113 字符串替换(C++STL解法)
- C++笔记
- 指针数组与二维数组的应用
- C++学习杂笔(总)
- C++学习笔记36 (模板的细节明确template specialization)和显式实例(template instantiation)
- C++四种类型的转换
- C语言 枚举(enum)、宏定义(#define)、结构体(struct)的一种联合应用
- 四、数组
- 三、流程控制
- 二、函数
- HDU 1087
- 一、第一个C程序
- 12天学好C语言——记录我的C语言学习之路(Day 1)
- 12天学好C语言——记录我的C语言学习之路(Day 1)
- c语言指针的复习
- C语言柔性数组
- c语言中的“宏”是指什么?
- C++的三种访问权限与三种继承方式
- C语言
- C++中的友元函数及友元类