另一种单链表模式
#include<stdio.h>
#include<iostream>
struct Node
{
int val;
Node *next;
};
struct Node *tail = NULL;
/*创建链表*/
struct Node* creatList() //创建链表
{
struct Node* headNode = (struct Node*)malloc(sizeof(struct Node));
headNode->next = NULL;
return headNode;
}
struct Node* createNode(int data) //创建节点
{
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->val = data;
newNode->next = NULL;
return newNode;
}
void printhead(struct Node* headNode) //打印链表
{
struct Node* pmove = headNode->next;
while (pmove)
{
printf("%d", pmove->val);
pmove = pmove->next;
}
printf("\n");
}
/*头插法插入链表*/
void inserNodeByHead(struct Node* headNode, int val) //头插法插入链表(代数)
{
//创建插入的节点
struct Node* newNode = createNode(val);
newNode->next = headNode->next;
headNode->next = newNode;
}
/*尾插法插入链表*/
void inserNodeBytail(struct Node* headNode, int data)
{
//创建插入的节点
struct Node *p = createNode(data);
tail->next = p;
tail = p;
}
int main()
{
/*头插*/
struct Node* List1 = creatList();
inserNodeByHead(List1, 1);
inserNodeByHead(List1, 2);
inserNodeByHead(List1,4);
printhead(List1);
///*尾插*/
struct Node* List2 = creatList();
tail = List2;
inserNodeBytail(List2, 1);
inserNodeBytail(List2, 2);
inserNodeBytail(List2, 4);
printhead(List2);
system("pause");
return 0;
}
结果
——》421
——》124