首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

C 单链表剔除节点

2012-12-22 
C 单链表删除节点#include stdio.h#include stdlib.hstruct node{int datastruct node *next}node

C 单链表删除节点

#include <stdio.h>#include <stdlib.h>struct node{int data;struct node *next;};node * InitLink(){node *p,*head,*newNode;head = (node*)malloc(sizeof(node));p = head;int array[] = {1,133,313,122,11,12,22,85,52};int i = 0;while(i<sizeof(array)/sizeof(int)){newNode = (node*)malloc(sizeof(node));newNode->data = array[i]; p->next = newNode;p = p->next;p->next = NULL;i++;}head = head->next;return head;}void print(node *head){node *p = head;if(head!=NULL){while(p!=NULL)   {   printf("%d\n",p->data);//122,133,313,122,11,12,22,85,52p = p->next;   }   }};node *deleteNode(node *head,int num){node *p1 ,*p2;p1 = head;while(num!=p1->data&&p1->next!=NULL){p2 =p1;p1 = p1->next;}if(num == p1->data){if(p1 == head){head = head->next;free(p1);}else{p2->next = p1->next;free(p1);}}elseprintf("%d couldn't be found\n",num);return head;}int main(){node *head = InitLink();head = deleteNode(head,52);print(head);return 0;}

热点排行