C语言实现单链表的创建和添加结点
2017-09-29 14:23
519 查看
#include<stdio.h>
#include<stdlib.h>
//单链表有头结点的链表
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}Node, *LINK;
LINK create()//创建一个链表
{
//所以创建结点的时候需要一个尾结点,便于实现尾部插入
LINK phead = (LINK)malloc(sizeof(Node));
LINK pend, pnew;
ElemType data;
phead->next = NULL;
pend = phead;
printf("请输入数据:\n");
scanf_s("%d", &data);
while (data != 0)
{
pnew = (LINK)malloc(sizeof(Node));
pnew->data = data;
pnew->next = NULL;
pend->next = pnew;
pend = pnew;
scanf_s("%d", &data);
}
return phead;
}
void display(LINK phead)//遍历链表
{
LINK ptemp = (LINK)malloc(sizeof(Node));
ptemp = phead->next;
while (ptemp != NULL)
{
printf("%d ", ptemp->data);
ptemp = ptemp->next;
}
printf("\n");
}
void addNode(LINK phead, int value)
{
//与创建结点的函数不同,添加结点虽然也是尾部添加,但是并没有用到尾结点。
LINK pnew = (LINK)malloc(sizeof(Node)), p;
pnew->next = NULL;
pnew->data = value;
if (phead->next == NULL)
phead->next = pnew;
else
{
p = phead;
while (p->next != NULL)
{
p = p->next;
}
p->next = pnew;
}
}
int main()
{
LINK phead = (LINK)malloc(sizeof(Node));
int data = 0;
phead = create();
display(phead);
int value;
printf("请输入一个值:");
scanf_s("%d", &value);
addNode(phead, value);
display(phead);
return 0;
}
#include<stdlib.h>
//单链表有头结点的链表
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}Node, *LINK;
LINK create()//创建一个链表
{
//所以创建结点的时候需要一个尾结点,便于实现尾部插入
LINK phead = (LINK)malloc(sizeof(Node));
LINK pend, pnew;
ElemType data;
phead->next = NULL;
pend = phead;
printf("请输入数据:\n");
scanf_s("%d", &data);
while (data != 0)
{
pnew = (LINK)malloc(sizeof(Node));
pnew->data = data;
pnew->next = NULL;
pend->next = pnew;
pend = pnew;
scanf_s("%d", &data);
}
return phead;
}
void display(LINK phead)//遍历链表
{
LINK ptemp = (LINK)malloc(sizeof(Node));
ptemp = phead->next;
while (ptemp != NULL)
{
printf("%d ", ptemp->data);
ptemp = ptemp->next;
}
printf("\n");
}
void addNode(LINK phead, int value)
{
//与创建结点的函数不同,添加结点虽然也是尾部添加,但是并没有用到尾结点。
LINK pnew = (LINK)malloc(sizeof(Node)), p;
pnew->next = NULL;
pnew->data = value;
if (phead->next == NULL)
phead->next = pnew;
else
{
p = phead;
while (p->next != NULL)
{
p = p->next;
}
p->next = pnew;
}
}
int main()
{
LINK phead = (LINK)malloc(sizeof(Node));
int data = 0;
phead = create();
display(phead);
int value;
printf("请输入一个值:");
scanf_s("%d", &value);
addNode(phead, value);
display(phead);
return 0;
}
相关文章推荐
- c语言实现对传统单链表的创建、添加 遍历 删除 反转元素操作
- C语言单链表的创建和添加结点
- 单向链表之创建添加(C语言实现)
- C语言进阶-第18讲:单链表的遍历、创建、插入和删除结点
- C语言实现创建单链表及求长度
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- [置顶] 不带头结点的 单链表的各种操作实现c语言
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- c语言实现正序链表的创建(不使用头结点)
- 笔试题:创建一个单链表,结点包含学生的学号,姓名,性别,年龄信息.写几个程序,实现按学生学号插入,查询,删除等操作.
- C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
- C语言实现单链表的逆序打印(带头结点)
- c语言实现单链表的操作:创建,删除,插入,反转, 排序等
- C语言实现单链表的节点插入(带头结点)
- C语言单链表的建立,查找,添加,删除,修改功能实现
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言实现单链表的创建、插入、删除
- C语言实现单链表的初始化、创建、遍历等操作