malloc2 double linked list
来源:互联网 发布:天刀数据随机盟会 编辑:程序博客网 时间:2024/05/16 06:03
#include<stdio.h>
#include<stdlib.h>
struct node{
int data;
struct node *prev;
struct node *next;
};
struct node *g_head=NULL, *g_tail=NULL;
void insertData(int num){
struct node *p=NULL, *ptr=NULL;
ptr = g_head;
while(ptr){
if(ptr->data==num)
return;
if(ptr->data>num)
break;
ptr=ptr->next;
}
if(p = (struct node *)malloc(sizeof(sizeof(struct node))==NULL) ;
return;
p->data = num;
p->prev =NULL;
p->next =NULL;
if(ptr==NULL){ //1.整个list都是空的 2.insert num 是最大的n
if(g_tail ==NULL) {// case 1
g_head=g_tail=p;
}
else{
g_tail->next=p;
p->prev=g_tail;
g_tail=p;
}
}
else if(ptr==g_head){ //insert in the begining
g_head->prev =p;
p->next = g_head;
g_tail =p;
}
else{ //insert p in front of ptr
p->prev = ptr->prev;
ptr->prev->next=p;
ptr->prev =p;
p->next=ptr;
}
void deleteData(int num){
struct node *ptr=NULL;
ptr=g_head;
while(ptr){
if(ptr->data==num)
break;
ptr=ptr->next;
}
//没找到
if(ptr==NULL)
return;
if(ptr==g_head && ptr==g_tail){ //only one left
g_head = g_tail = NULL;
free(ptr);
ptr =NULL;
}
else if(ptr==g_head){ // is the first
g_head=g_;head->next;
g_head->prev=NULL;
free(ptr);
ptr=NULL;
}
else if(ptr == g_tail){ //is the last
g_tail =g_tail->prev;
g_tail->next = NULL;
free(ptr);
ptr=NULL;
}
else{ //in the middle
ptr->prev->next = ptr->next;
ptr->next->prev = ptr->prev;
free(ptr);
ptr=NULL;
}
}
void printList(void){
struct node *ptr=NULL;
ptr=g_head;
while(ptr){
printf("%d",ptr->data);
ptr=ptr->next;
}
printf("\n");
}
void freeList(void){
struct node *ptr=NULL;
ptr = g_head;
while(ptr !=NULL){
g_head = g_head->next;
free(ptr);
ptr=g_head;
}
}
struct node *;
int main(void){
return 0;
}
int main(void){
insertData(5);
insertData(2);
insertData(8);
printList();
insertData(6);
insertData(10);
printList();
deleteData(2);
printList();
freeList();
return 0;
}
- malloc2 double linked list
- Double Circular Linked List
- bst double Linked List
- 双链表 double linked list
- List(double linked)
- double linked list of kernel
- smallbin double linked list corrupted
- BST to Double Linked List
- Double Linked List--Data Structure
- list实现ALDS1_3_C;double Linked List
- (3) double-linked list: insque remque
- 段错误:smallbin double linked list corrupted
- Implement Double Linked List from Stack
- double linked list双向链表
- Flatten BST to Double Linked List
- Convert Binary Search Tree to an Ordered Double Linked List
- No. 01 - Binary Search Tree and Double-linked List
- *** glibc detected *** /home/app: corrupted double-linked list: 0x08b08918 ***
- Docker之容器
- Python MySQLdb
- 使用JDBC配置mysql
- 正则练习例子
- linux常用命令(一)
- malloc2 double linked list
- LinkedList和ArrayList的区别
- js 按月递增 算法
- 产生证书请求工具类
- android关闭重启app
- 一个人开发APP系列之实战1 制作APP产品启动图标
- char*,const char*和string 三者转换
- 设计模式-观察者模式
- STM32F4开发前菜