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

📄 习题10-两链表并集.c

📁 数据结构各章实验源代码; 数据结构实验源代码
💻 C
字号:
#include  "datastru.h"
#include  <stdio.h>
#include  <malloc.h>

int locate(LINKLIST *a,char x)
/*检查元素x是否在a表中*/
{LINKLIST *la;

la = a->next;
while(la !=NULL)
   if(la->data == x) return 1;
   else la = la->next;
return 0;
}

insert(LINKLIST *a,char x)
/*将x元素加入a表中*/
{LINKLIST *p;

p = (LINKLIST *) malloc(sizeof(LINKLIST));
p->data = x;
p->next = a->next;
a->next = p;
}

void unionn(LINKLIST *a1, LINKLIST *b1){
/*两链表并集*/
LINKLIST *lb;

lb = b1->next;
while(lb != NULL)
 { if (!locate(a1,lb->data))   /*如果b1表中的一个元素不在a1表中*/
    insert(a1,lb->data);       /*则将b1表中的该元素加入a1表中*/
   lb = lb->next;}
}


int count_head(LINKLIST *head){
/*带头结点的单链表:输出单链表元素值并计数*/
  int i = 0;
  LINKLIST *p;
  p = head->next;
  printf("输出单链表元素值 : ");
  while(p != NULL)
   {printf("  %c",p->data);
    i++;
    p = p->next;}
  printf("\n");
  return i;
}

LINKLIST *creatlink_head_rail(LINKLIST *head){
/*用尾插入法建立带头结点的单链表*/
  LINKLIST *last, *t;
  char ch;
  
  t = (LINKLIST *)malloc(sizeof(LINKLIST));
  head = t;  last = t;
  t->next = NULL;
  printf("单链表元素值为单个字符, 连续输入,$为结束字符  : ");
  while ((ch = getchar()) != '$')
   {t = (LINKLIST *)malloc(sizeof(LINKLIST));
    t->data = ch;
    t->next = NULL;
    last->next = t;
    last = t;}
  return (head);
}

main()
 { LINKLIST *a1, *a2;
   int num;
   
  	printf("\n    建立单链表a1 \n\n");
	a1 = NULL;
	a1 = creatlink_head_rail(a1);
	fflush(stdin);
	num = count_head(a1);
	printf("\n    建立单链表a2 \n\n");
	a2 = NULL;
	a2 = creatlink_head_rail(a2);
	fflush(stdin);
	num = count_head(a2);
	printf("\n\n   两链表并集运算,结果保留在a1中\n\n");
	unionn(a1,a2);
	num = count_head(a1); 
}

⌨️ 快捷键说明

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