#include <iostream>
#include <cstdlib>
using namespace std;
typedef struct node{
int data;
struct node* next;
}Node, *List;
List createList(){
Node *head, *p1, *p2;
p1 = p2 = head = new Node;
int num;
cin >> num;
while(-1 != num){
p1 = new Node;
p1 -> data = num;
p2 -> next = p1;
p2 = p1;
cin >> num;
}
return head;
}
int getListLength(List L){
int length = 0;
while(NULL != L -> next){
length++;
L = L -> next;
}
return length;
}
List insertNode(List L, int position, int element){
int length = getListLength(L);
if(position < 1 || position > length + 1){
exit(1);
}
Node *p1 = L -> next;
Node *p2 = L;
for(int i = 0; i < position - 1; ++i){
p2 = p1;
p1 = p1 -> next;
}
Node *s = new Node;
s -> data = element;
p2 -> next = s;
s -> next = p1;
return L;
}
List delNode(List L, int num){
Node *p1 = NULL;
Node *p2 = NULL;
if(NULL == L -> next)
return L;
p1 = L -> next;
p2 = L;
while(NULL != p1 && num != p1 -> data){
p2 = p1;
p1 = p1 -> next;
}
if(NULL == p1){
cout << "没有找到" << endl;
}else{
p2 -> next = p1 -> next;
delete p1;
}
return L;
}
void printList(List L){
while(NULL != L -> next){
cout << L -> next -> data << " ";
L = L -> next;
}
cout << endl;
}
void releaseList(List L){
if(NULL == L -> next)
delete L;
else{
releaseList(L -> next);
delete L;
}
}
int main(){
List Head = createList();
printList(Head);
int position = 4;
int element = 100;
Head = insertNode(Head, position, element);
printList(Head);
int num = 3;
Head = delNode(Head, num);
printList(Head);
releaseList(Head);
return 0;
}
实现一个单链表
最新推荐文章于 2023-03-16 23:22:08 发布