您的位置:首页 > 编程语言 > C语言/C++

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐