建立List结构
#include <cstdio>
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct Node{
int data;
struct Node *next; //next指针
int size; //单链表大小
}*List;
尾插入法建立单链表
void Creat(List &L,int n){
L = (List)malloc(sizeof(List));
L->size = 0;
Node *p = L,*q;
for(int i=0;i<n;i++){
q = (List)malloc(sizeof(List));
cin>>q->data;
p->next = q; //将p的next指向q n=0时即L->next = q
p = q; //将p向后移动至q n=0时即p = L->next
L->size++;
}
p->next = NULL; //p->next总为空
}
删除指定位置的元素
void Delete(List &L,int num){
List p = L;
for(int i=0;i<num-1;i++){ //找到要删除的前一个位置
p = p->next;
}
List q = p->next; //声明要删除的元素q
p->next = q->next; //q的后继成为p的后继 即删除q
free(q);
L->size--;
}
在num位置插入值为val的元素
void Insert(List &L,int val,int num){
List p = L;
for(int i=0;i<num-1;i++){ //找到要插入的前一个位置
p = p->next;
}
List q = (List)malloc(sizeof(List));
q->data = val;
q->next = p->next; //使插入位置前一个元素p的后继成为插入元素q的后继
p->next = q; //插入元素q
L->size++;
}
取得num位置的元素的值
int GetElem(List &L,int num){
List p = L;
for(int i=0;i<num;i++){ //找到要取得的位置
p = p->next;
}
return p->data;
}
输出单链表
void Show(List &L){
List p = L->next;
for(int i=0;i<L->size;i++){
cout<<p->data<<" ";
p = p->next;
}
cout<<endl;
}