{
int x, i, nodeNum;
linklist *head, *rear, *temp;// 定义头结点、尾结点和临时结点
head = (linklist *)malloc(sizeof(linklist));// 生成表头结点,表头结点不存放数据
head-next = NULL;// 将表头结点的指针域赋值为NULL
rear = head;// 将表头结点赋值给表尾结点
printf("请输入链表中结点的个数:");
scanf("%d", nodeNum);
for(i=1; i=nodeNum; i++)
{
printf("请输入第 %d 个结点的数据:", i);
scanf("%d", x);
temp = (linklist *)malloc(sizeof(linklist));// 生成新的结点
temp-data = https://www.04ip.com/post/x;// 新增结点的数据域
temp-next = NULL; // 新增结点的指针域(由于是尾插法,所以插入的结点都在尾部,即指针域为NULL)
rear-next = temp; // 使前一个结点指向新增结点(head-next=temp)
rear = temp;// 将新增结点赋值给尾结点(尾插法 , 插入的结点在尾部)(rear=head-next)
}
//rear-next = NULL;// 将尾结点的指针域赋值为空(为了方便检验链表是否为空链表)
return head;// 返回头结点
}
C语言创建链表,函数调用部分#includestdio.h
#includewindows.h
#include stdio.h
#include malloc.h
#include stdlib.h
//定义数据类型名称
typedef int DataType;
#define flag -1//定义数据输入结束的标志数据
//单链表结点存储结构定义
typedef struct Node
{
DataType data;
struct Node *next;
}LNode ,*LinkList;
//建立单链表子函数
LNode *Create_LinkList()
{
LNode *s,*head,*L;int i=0,x;//定义指向当前插入元素的指针
while(1)
{
scanf("%d",x);
if(-1==x)
{return head;
break;}
s= (LNode *)malloc(sizeof(LNode));//为当前插入元素的指针分配地址空间
s-data =https://www.04ip.com/post/x;
s-next =NULL;
i++;
if(i==1)
head=s;
else
L-next =s;
L=s;
}
}
//查找子函数(按序号查找)
LNode *Get_LinkList(LinkList L,int i)
{
LNode *p;
int j;//j是计数器,用来判断当前的结点是否是第i个结点
p=L;
j=1;
while(p!=NULLji)
{
p=p-next ;//当前结点p不是第i个且p非空,则p移向下一个结点
j++;
}
return p;
}
//插入运算子函数
void Insert_LinkList(LinkList L,int i,DataType x)//在单链表L中第i个位置插入值为x的新结点
{
LNode *p,*s;
p =Get_LinkList(L,i);//寻找链表的第i-1个位置结点
if(p==NULL)
{
printf("插入位置不合法!");
exit(-1);
}
else
{
s= (LinkList)malloc(sizeof(LNode));//为当前插入元素的指针分配地址空间
s-data =https://www.04ip.com/post/x;
s-next =p-next ;
p-next =s;
}
}
//单链表的删除运算子函数
void Delete_LinkList(LinkList L,int i)//删除单链表上的第i个结点
{
LNode *p,*q;
p=Get_LinkList(L,i-1);//寻找链表的第i-1个位置结点
if(p==NULL)
{
printf("删除的位置不合法!");//第i个结点的前驱结点不存在 , 不能执行删除操作
exit(-1);
}
else
{
if(p-next ==NULL)
{
printf("删除的位置不合法!");//第i个结点不存在,不能执行删除操作
exit(-1);
}
else
{
q=p-next ;
p-next =p-next-next;
free(q);
}
}
}
//求表长运算子函数
int Length_LinkList(LinkList L)
{
int l;//l记录L的表长
LNode *p;
p=L;
l=1;
while(p-next)
{
p=p-next;
l++;
}
return l;
}
int main ()
{
LNode *head,*p;
推荐阅读
- zoe直播录屏,在线录屏直播
- 如何打造万能营销模式创新的简单介绍
- 公众号李怎么加文章链接,如何在公众号文章添加链接
- 主机游戏挥刀动作,主机游戏挥刀动作怎么设置
- go语言编写mysql go语言编写mysql插件
- 怎么上网看电视,如何上网看电视直播
- jquery与刷新上传,jqueryload方法,刷新网页
- c代理服务器,代理服务器选项
- linux命令逐行输出 linux输出行号