码迷,mamicode.com
首页 > 其他好文 > 详细

链表结点的删除(有重复)

时间:2018-08-03 11:28:59      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:pre   删除   ems   创建   sam   \n   判断   oid   void   

#include<stdio.h> #include<stdlib.h> #define N 9 typedef struct node{    int  data;    struct node * next; }ElemSN; ElemSN  * Createlink(int a[],int n){            //逆向创建单向链表     int i;     ElemSN * h=NULL, * p;     for( i=N-1;i>=0;i--){        p=(ElemSN *)malloc(sizeof(ElemSN));        p->data =a[i];        p->next=h;        h=p;     }     return h;    }  void Printlink(ElemSN * h){    ElemSN * p;    for(p=h;p;p=p->next)   pintf("%2d\n",p->data);    }  ElemSN * DelSamenode(ElemSN*h,int key){    ElemSN * p,* q;  p=h;  while(p){              //p不为空   if(p->data!=key) {            //未找到key     q=p;            //两指针联动 p=p->next;   }                                   else{                         //key找到p指针指着key      if(p!=h){                  //判断是否为头结点 不是头结点        q->next=p->next;          free(p);          p=q->next;      }     else{                        //是头结点    h=h->next;   free(p);   p=h; }   } } return h;   } int main(void){  int a[]={3,2,9,8,9,7,9,6,1};  int key;      ElemSN * head;  head=Createlink(a,9);  printf("key=");  scanf("%2d",&key);      head=DelSamenode(head,key);  Printlink(head);  }


链表结点的删除(有重复)

标签:pre   删除   ems   创建   sam   \n   判断   oid   void   

原文地址:http://blog.51cto.com/13645380/2153862

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!