#include#include #include typedef struct node { struct node* prev;//前一个结点 int data; struct node* next;//下一个结点 }*PNODE, NODE; PNODE create(int data) { PNODE p = (PNODE)malloc(sizeof(NODE));//定义一个结点 p->prev = NULL; p->data = data; p->next = NULL; return p; } PNODE header;//头结点 PNODE ender;//尾结点 void add(PNODE node)//尾部追加 { if (header == NULL)//空表 { header = node; ender = node; return; } ender->next = node; ender = node; } void insert_behind(int index, PNODE node)//index 下标,node 新结点 { PNODE p = header;//开始指向头结点 if (header == NULL)//头结点为空 { add(node); return; //if中使用return,提前结束函数执行 } for (int i = 0; i < index && p != NULL; i++) { p = p->next; } if (p == NULL)//p超过范围,调用add函数,加到最后位置 { add(node); return; } //在p的后面插入 node->next = p->next; p->next = node; if (node->next == NULL)//当新结点被插到最后,尾结点就是node; { ender = node; } } int main() { ender = header = NULL; add(create(1));//0 add(create(2));//1 add(create(3));//2 add(create(4));//3 insert_behind(10, create(666)); { PNODE p = header; while (p != NULL) { printf("%dn", p->data); p = p->next; } } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)