⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3_3.txt

📁 C语言数据结构知识原代码 C语言数据结构知识原代码C语言数据结构知识原代码
💻 TXT
字号:
#include<stdio.h>
typedef struct node{                   /*结点类型*/
   int data;
   struct node *next;
   }Llist;
  
  createlist(Llist **h,int a[],int n)
   {
    int i;Llist *s,*r;
    for(i=0;i<n;i++)                       /*在表尾插入结点*/
     {
      s=(Llist *)malloc(sizeof(Llist));
      s->data=a[i];
      s->next=NULL;
      if(*h==NULL){*h=s;
                   r=s;}
       else { r->next=s;
              r=s;}
     }
   }

delete1(Llist **a)
 {
  Llist *p,*q,*temp;
  p=*a;
  if(p==NULL)return 1;
  q=p->next;
  p->next=NULL;
  while(q)
   if(q->data==p->data){temp=q;q=q->next;free(temp);}
   else{
    p->next=q;
    p=q;
    q=q->next;
    p->next=NULL;  
  } 
 }

delete2(Llist **b)
 {
   Llist *p,*q,*temp,*r;int find;
   p=*b;
   if(p==NULL)return 1;
   q=p->next;
   p->next=NULL;
  while(q){
   find=0;                                 
   r=*b;
   while(r)                               /*在已经搜索过的链表中查找是否存在值相等的结点*/    
   if(r->data==q->data){find=1;break;}
    else
     r=r->next;
   if(find){temp=q;q=q->next;free(temp);} /*找到重复的结点*/
   else{
    p->next=q;
    p=q;
    q=q->next;
    p->next=NULL; 
  }  
  } /*while*/
 }

main()
 {
  int a[]={-1,3,3,5,7,10},b[]={-1,2,5,10,2,8};
  Llist *a1=NULL,*b1=NULL,*p;
  createlist(&a1,a,6);                     /*建立链表A*/
  createlist(&b1,b,6);                     /*建立链表B*/
  delete1(&a1);                            /*删除链表A中的重复元素*/
  p=a1;
  while(p){
   printf("%d ",p->data);
   p=p->next;
   }
 delete2(&b1);                            /*删除链表B中的重复元素*/
  p=b1;
  while(p){
   printf("%d ",p->data);
   p=p->next;
   }
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -