#include <cstdio>
#include <cstdlib>
struct node{
int iNum;
node* pNext;
};
int main()
{
//一个节点的初始化与显示
node node1 = {15};
printf("%d", node1.iNum);
//输出两个节点
node node2 = {19};
node1.pNext = &node2;
node head = {0};
node tail = {0};
head.pNext = &node1;
node2.pNext = &tail;
tail.pNext = NULL;
for (node* p_node = &node1; p_node != &tail; p_node = p_node->pNext)
{
node* p_first = p_node;
node* p_mid = p_first->pNext;
node* p_last = p_mid->pNext;
if(p_mid != &tail)
{
printf("%d ",p_mid->iNum);
}
}
printf("\n");
//查找节点
int tmp1 = 19, cnt1 = 1;
for (node* p_node = &head; p_node != &tail; p_node = p_node->pNext)
{
node* p_first = p_node;
node* p_mid = p_first->pNext;
node* p_last = p_mid->pNext;
if (p_mid->iNum == tmp1)
{
printf("%d是第%d个节点\n", p_mid->iNum, cnt1);
break;
}
cnt1++;
}
printf("\n");
//插入一个节点
node node3 = {16};
for (node* p_node = &head; p_node != &tail; p_node = p_node->pNext)
{
node* p_first = p_node;
node* p_mid = p_first->pNext;
node* p_last = p_mid->pNext;
//是尾节点直接插入,否则插入到p_first和p_mid之间
if (p_mid == &tail || p_mid->iNum > node3.iNum)
{
p_first->pNext = &node3;
node3.pNext = p_mid;
break;
}
}
for (node* p_node = &head; p_node != &tail; p_node = p_node->pNext)
{
node* p_first = p_node;
node* p_mid = p_first->pNext;
node* p_last = p_mid->pNext;
if (p_mid != &tail)
{
printf("%d",p_mid->iNum);
}
}
printf("\n");
//删除一个元素
for (node* p_node = &head; p_node != &tail; p_node = p_node->pNext)
{
node* p_first = p_node;
node* p_mid = p_first->pNext;
node* p_last = p_mid->pNext;
//删除的不能是尾节点
if (p_mid != &tail && p_mid->iNum == 16)
{
p_first->pNext = p_last;
break;
}
}
for (node* p_node = &head; p_node != &tail; p_node = p_node->pNext)
{
node* p_first = p_node;
node* p_mid = p_first->pNext;
node* p_last = p_mid->pNext;
if (p_mid != &tail)
{
printf("%d",p_mid->iNum);
}
}
return 0;
}