#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
struct Node{ //表的结构体
int data; //数据域
struct node *next; //指针域
};
struct Node* creatlist() //创建一个链表 带头结点
{
struct Node* headNode = (struct Node*)malloc(sizeof(struct Node)); //创建头节点分配动态内存
headNode->next=NULL; //头节点指向空NULL
return headNode; //返回头节点
}
struct Node* creatnode(int data){ //创建一个新节点
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); //创建新节点分配动态内存
newNode->data = data; //数据域指向data
newNode->next = NULL; //指针域指向空(因为是最后一个)
return newNode; //返回新节点
}
void charu(struct Node* headNode,int data) //插入一个新节点 (这里用的是头插法,插在头结点之后)
{
struct Node* newNode= creatnode(data); //插入新节点前要先创建新节点
newNode->next=headNode->next; //新节点指向头结点后一个节点之前
headNode->next=newNode; //头结点之后指向新节点
}
void printflist(struct Node* headNode){ //输入链表的函数
struct Node* Pmove = headNode->next; //创建一个Pmove节点在头节点之后
while(Pmove) //当这个节点存在时
{
printf("%d",Pmove->data); //输入Pmove节点的数据域里面的值
Pmove=Pmove->next; //在Pmove往后移一位
}
printf("\n"); //换行
}
void shanchu(struct )
int main(){
struct Node* list=creatlist(); //创建链表
charu(list,1); //插入一个 节点在头节点之后
charu(list,2); //以此类推
charu(list,3);
printflist(list); //输出是321 因为头插法先入后出 都被往后挤了
return 0;
}
链表的创建和插入
最新推荐文章于 2022-07-29 10:29:12 发布