基本定义
节点的定义:
struct node {
typename data ;
node* next;
} ;
申请动态空间
int * p = new int ;
node* p = new node;
释放内存
delete ( p) ;
链表的基本操作
创建链表
# include <cstdio>
struct node {
int data;
node* next;
}
node* create ( int array[ ] ) {
node * p, * pre, * head;
head = new node;
head. next = NULL ;
pre = head;
for ( int i = 0 ; i < 5 ; i++ ) {
p = new node;
p-> data = array[ i] ;
p-> next = NULL ;
pre-> next = p;
pre = p;
}
return head;
}
int main ( ) {
int array[ 5 ] = { 5 , 3 , 6 , 1 , 2 } ;
node* L = create ( array) ;
while ( L != NULL ) {
printf ( "%d" , L-> data) ;
L = L-> next;
}
return 0 ;
}
查找元素
int search ( node* head, int x) {
int count = 0 ;
node* p = head-> next;
while ( p != NULL ) {
if ( p-> data== x) count++ ;
p = p-> next;
}
return count;
}
插入元素
void ( node* head, int pos, int x) {
node* p = head;
for ( int i = 0 ; i < pos - 1 ; i++ ) {
p = p-> next;
}
node* q = new node;
q-> data = x;
q-> next = p-> next;
p-> next = q;
}
删除元素
void del ( node* head, int x) {
node* p = head-> next;
node* pre = head;
while ( p != NULL ) {
if ( p-> data == x) {
pre-> next = p-> next;
delete ( p) ;
p = pre-> next;
} else {
pre = p;
p = p-> next;
}
}
}