数据结构案例 C语言版

1、求两线性表LA与LB分别表示两个集合,求A = A U B

void union(Linear_lsit LA, Linear_lsit LB){
	n = ListLength(LA); //LA的表长
	for(i =1; i <= ListLength(LB); i++){
		x = GetNode(LB, i);//取LB中第i个值赋给x
		if(LocateNode(LA, x) == 0){
			InsertList(LA, ++n, x);
		}
	}
}

2、删除线性表L中重复的原素

	
void purge(linear_List L)
{
  i = 1;
  while (i < ListLenght(L))
  {
    x = GetNode(L, i);
    j = i + 1;
    while (j <= ListLength(L))
    {
      y = GetNode(L, j);
      if (x == = y)
      {
        DeleteList(L, j);
      }
      else
      {
        j++;
      }
    }
    i++;
  }

3、在一个顺序表中找到最大值与最小值,及其所在的位置


  void MaxMin(SeqList L, DataType * max, DataType * min, int *k, int *j)
  {
    int i;
    *max = L.data[0];
    *min = L.data[0];
    *k = *j = 1; // 假设第一个即使最大值也是最小值
    for (i = 1; L.length; i++)
    {
      if (L.data[i] > *max)
      {
        *max = L.data[i];
        *k = i;
      }
      else if (L.data[i] < *min)
      {
        *min = L.data[i];
        *j = i;
      }
    }
  }

4、将一个头节点指针为a的带头结点的单链表A分解成两个单链表A和B,其中头节点指针分别为a和b,使得A链表中含有远链表A中序号为奇数的元素,而B链表中含有原链表中序号为偶数的元素,并保持原来的相对顺序

void split(LinkList a, LinkList b)
  {
    ListNode *p, *r, *s;
    p = a->next;
    r = a;
    s = break;
    while (p != NULL)
    {
      r->next = p;
      r = p;
      p = p->next;
      if (p)
      {
        s->next = p;
        s = p;
        p = p->next;
      }
    }
    r->next = s->next = NULL;
  }

5、已有一个节点数据域为整型的,且按大到小顺序排列的头节点指针为L的非空单循环链表,试写一个算法插入一个结点(其数据域为x)至循环表的适当位置使之保持链表的有序性


  void InsertList(LinkList L, int x)
  {
    ListNode *s, *p, *q;
    s = (ListNode *)malloc(sizeof(ListNode));
    s->data = x;
    p = L;
    q = p->next;
    while (q->data > x && q != L)
    {
      p = p->next;
      q = p->next;
    }
    p->next = s;
    s->next = q;
   
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值