#include<iostream>
using namespace std;
struct Node
{
int data;
Node* next;
};
Node* head;
void Insert(int data)//在链表尾部插入节点
{
Node *temp = new Node;
temp->data = data;
temp->next = NULL;
if(head == NULL)
{
head = temp;
}
else
{
Node* temp1 = head;
while(temp1->next != NULL)
temp1 = temp1->next;
temp1->next = temp;
}
}
void Print()
{
Node* temp = head;
while(temp != NULL)
{
printf("%d ",temp->data);
temp = temp->next;
}
printf("\n");
}
void Delete(int n)
{
Node* temp1 = head;
if(n == 1)
{
head = temp1->next;//head指向第二个节点
delete temp1;//释放第一个结点的内存
}
else
{
for(int i = 0; i < n - 2; i++)//temp1 指向 第 (n-1) 个节点
temp1 = temp1->next;
Node* temp2 = temp1->next;//temp2 指向 第 n 个节点
temp1->next = temp2->next;//第(n-1)个节点的next指向第(n+1)个节点
delete temp2;//释放第n个节点的内存 C:free(temp2);
}
}
int main()
{
head = NULL;//链表为空
Insert(2);
Insert(4);
Insert(6);
Insert(5); //List: 2,4,6,5
Print();
int n;
printf("Enter a position\n");
scanf("%d",&n);
Delete(n);
Print();
return 0;
}