一、有关创建链表
①设数据集合A,其值均为正整数,无序且含有重复值。创建一个单向链表,每个结点数据域的值为数据集合的值且不重复
例A={3,2,2,3,5,3,8,5,2}
创建后的链表如下:
代码如下:
#include<stdio.h>
#define N 8
typedef struct node{
int date;
int count;
struct node *next;
}ElemSN;
ElemSN *CreateLink(int a[]){
ElemSN *t,*h,*p;
h = null;
for(int i = 0 ;i < N ;i++){
for(p = h ;p && p->date-a[i];t = p,p= p->next);
if(p) //在链表中已经存入,只需要计数即可
p->count++;
else{//还未存入链表
p = (ElemSN *)malloc(sizeof(ElemSN));
p ->date = a[i];
p ->next = null;
if(!h)
h = t =p;
else
t = t->next = p;
}
}
}
int main(void)
{
int a[N]= {3,2,2,3,5,3,8,5,2};
ElemSN *head;
head = CreateLinnk(a);
//输出
printLink(head);
}
思路:
遍历集合a,在链表中找看是否存在存在集合a中的元素,如果链表中p->date=-a[i],表示存在这个元素