C语言实现单链表的创建和添加结点

来源:互联网 发布:c语言输出等腰三角形 编辑:程序博客网 时间:2024/05/16 02:18
#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;
}
阅读全文
0 0
原创粉丝点击