链表使用—创建、插入、删除(代码)
(1) 创建链表
这里用c++中的new关键字来分配内存,个人觉得比malloc简单哟,至少比它短hhh
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 < Array.length(); i++) {
p = new node; //创建一个新节点
pre -> next = p; //将pre与p来连接起来
p -> next = NULL;
p -> data = Array[i]; //给p节点赋值
pre = p; //最后使p节点为前驱节点
}
return head;
}
(2) 插入
void insert( node* head, int pos, int x ) [
//pos是要插入的位置,x是要插入的数值
node* p = head;
for(int i = 0; i < pos-1; i++) {
p = p -> next;
}
node* pp = new node;
pp -> data = x;
pp -> next = p -> next
p -> next = pp;
}
(3) 删除
void delete(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;
}
}
}
(4) 输出链表
while( p != NULL) {
printf("%d",p->data);
p=p->next;
}