温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-06-30 04:32:39 来源:网络 阅读:366 作者:闫宝通 栏目:编程语言
#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);  }


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI