#include <stdio.h>
#include <stdlib.h>
//定义节点
typedef
struct Node
{
int data;
struct Node *
PNext;
}*
PNode,Node;
//初始化函数
PNode create_list();
//创建节点
//打印出链表
void traverse_list(PNode);
//删除节点pos 从1 开始
void delete_node(PNode,
int,
int *
);
//插入节点 pos 从1开始
void insert_data(PNode,
int ,
int );
void main()
{
//int val;
//定义头指针
PNode PHead=
NULL;
PHead=
create_list();
//delete_node(PHead,-1,&val);
insert_data(PHead,-
2,
2);
traverse_list(PHead);
}
PNode create_list()
{
int len;
int i;
int val;
//定义头节点
PNode PHead=(PNode)
malloc(
sizeof(Node));
//内存不足等情况会出现分配内存失败的情况 发生错误会返回NULL
if(PHead ==
NULL){
printf("内存分配失败");
}
PNode Ptail=
PHead;
//将头节点的指针域指向NULL 如果没有首节点指针域就是NULL
Ptail->PNext=
NULL;
/*
思路:
定义节点ptail,永远指向尾节点,一开始只有头结点 头结点也是尾节点,所以指向头结点
将新建的PNew节点挂载到ptail节点后面,挂载好之后,ptail指向新建的PNew节点,这样保证ptail永远指向尾节点
*/
printf("请输入初始化节点的数量\n");
scanf("%d",&
len);
for(i=
0;i<len;i++
){
printf("请输入节点的值");
scanf("%d",&
val);
PNode PNew=(PNode)
malloc(
sizeof(Node));
PNew->data=
val;
Ptail->PNext=
PNew;
PNew->PNext=
NULL;
Ptail=
PNew;
}
//返回首节点
return PHead;
}
void traverse_list(PNode PHead)
{
PNode p = PHead->
PNext;
//printf("%d\n",PHead->PNext);
if(p ==
NULL)
{
printf("链表为空\n");
exit(0);
}
while(p !=
NULL){
printf("%d\n",p->
data);
p=p->
PNext;
}
}
void delete_node(PNode PHead,
int pos,
int *
val)
{
int i=
0;
if(PHead->PNext==
NULL){
printf("节点为空");
exit(0);
}
if(pos <
0){
printf("没有数据");
exit(0);
}
PNode p=
PHead;
PNode t;
PNode r;
while(i !=
pos){
//printf("%d\n",i=t->data);exit(0);
t=
p;
if(i == pos-
1){
//printf("%d\n",i=p->PNext->PNext->data);exit(0);
//exit(0);
r=p->
PNext;
t->PNext=p->PNext->
PNext;
free(r);
r=
NULL;
//exit(0);
return;
}
i++
;
p=p->
PNext;
}
}
void insert_data(PNode PHead,
int pos,
int val)
{
int i=
0;
PNode p=
PHead;
while(p != NULL && i<pos-
1){
p=p->
PNext;
i++
;
}
if(p == NULL || i>pos -
1){
printf("插入错误");
return ;
}
PNode PNew=(PNode)
malloc(
sizeof(Node));
if(PNew ==
NULL){
printf("内存分配失败");
exit(-
1);
}
PNode t=p->
PNext;
PNew->data=
val;
PNew->PNext=
t;
p->PNext=
PNew;
}
转载于:https://www.cnblogs.com/IT--Loding/p/6294197.html
转载请注明原文地址: https://win8.8miu.com/read-1480726.html