反转链表
#include <iostream>
using namespace std;
struct NODE
{
int data;
NODE *next;
};
NODE* fnew(NODE* L)
{
NODE *head, *p;
head = new NODE;
head->next = NULL;
while(L->next != NULL)
{
L = L->next;
p = head->next;
NODE *t = new NODE;
t->data = L->data;
head->next = t;
head->next->next = p;
}
return head;
}
void print(NODE* L)
{
NODE *now = L->next;
while(now != NULL)
{
cout << now->data << " ";
now = now->next;
}
cout<<endl;
}
int main()
{
int n, t;
NODE *root = new NODE;
root->next = NULL;
NODE *now = root;
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> t;
NODE *node = new NODE;
node->next = NULL;
node->data = t;
now->next = node;
now = now->next;
}
root = fnew(root);
print(root);
return 0;
}
删除指定位置
#include <iostream>
using namespace std;
struct NODE
{
int data;
NODE *next;
};
void print(NODE* L)
{
NODE *now = L->next;
if(now == NULL)
{
cout << "链表为空!" << endl;
return;
}
while(now != NULL)
{
cout << now->data << " ";
now = now->next;
}
cout<<endl;
}
void delByValue(NODE *L, int num)
{
while(L->next != NULL)
{
if(L->next->data == num)
{
L->next = L->next->next;
}
else L = L->next;
}
}
void delByIndex(NODE *L, int index)
{
int n = 0;
while(L->next != NULL)
{
n++;
if(n == index)
{
L->next = L->next->next;
}
else L = L->next;
}
}
int main()
{
int n, t, num, index;
NODE *root = new NODE;
root->next = NULL;
NODE *now = root;
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> t;
NODE *node = new NODE;
node->next = NULL;
node->data = t;
now->next = node;
now = now->next;
}
cin >> num;
delByValue(root, num);
print(root);
cin >> index;
delByIndex(root, index);
print(root);
return 0;
}