void printlist(struct Node* headNode)//打印链表
{
struct Node* pMove = headNode->next;//需要一个新的指针结构体移动来输出
while (pMove)//pMove不为空时,循环继续
{
printf(“%d\t”,pMove->data);//输出
pMove = pMove->next; //指向下一个
}
printf(“\n”);
}
void insertNodeByHead(struct Node* headNode,int data)//插入结点
{
struct Node* newNode = createNode(data);//把数据存入一个结点中
newNode->next = headNode->next;//新结点的指针 指向 插入位置结点的指针指向的位置
headNode->next = newNode; //插入位置结点的指针 指向 新结点
}
void deleteNodeByAppoin(struct Node* headNode,int posData)//删除结点 (从头开始)
{
struct Node* posNode = headNode->next;//找到要删除的结点
struct Node* posNodeFront = headNode;//找到要删除的前一个结点
if(posNode == NULL)//删除结点不存在
{
printf(“无法删除,链表为空\n”);
}
else
{
while(posNode->data != posData) //直到找到要删的数据
{
posNodeFront = posNode; // 向后移一个
posNode = posNodeFront->next; // 向后移一个
if(posNode == NULL){ // 为空不存在
printf(“无法删除,链表为空\n”);
return ;
}
}
posNodeFront->next = posNode->next;//前一个结点指针直接指向删除结点后的结点
free(posNode);//释放删除结点
}
}
int main(){
struct Node* list = createlist();
insertNodeByHead(list,1);
insertNodeByHead(list,2);
insertNodeByHead(list,3);
printlist(list);
deleteNodeByAppoin(list,2);
printlist(list);
system(“pause”);
return 0;
}