永发信息网

谁会用C语言编写线性表啊?

答案:5  悬赏:40  手机版
解决时间 2021-04-05 16:31
谁会用C语言编写线性表啊?
最佳答案
算法思想:两个链表中数据的交集也就是把他们相同的数据提取出来;
//创建递增排序的链表

struct Link *CreateLink()
{
struct Link *head=NULL,*p=NULL,*q=NULL;
head = (struct Link *)malloc(sizeof(struct Link));
head->next = NULL;
p = head;
int n=1;
printf("Please input a number(0 exit):\n");
scanf("%d",&n);
while( n != 0)
{
q = (struct Link *)malloc(sizeof(struct Link));
q->data = n;
p = Insert(p,q);
scanf("%d", &n);
}
return head;
}
struct Link *Insert(struct Link *head, struct Link *p)
{
struct Link *h=head,*q=NULL, *pTemp=p;
q = h;
while(q->next != NULL)
{
if ( (q->next->data) >= (pTemp->data) )
{
break;
}
q = q->next;
}
if (q->next != NULL)
{
pTemp->next = q->next;
q->next = pTemp;
}
else
{
q->next = pTemp;
pTemp->next = NULL;
}
return h;
}
//核心功能函数,找出交集
struct Link *Intersect(struct Link *head1, struct Link *head2)
{
struct Link *p1=head1->next,*p2=head2->next;
struct Link *head,*p,*q;
head = (struct Link *)malloc(sizeof(struct Link));
head->next = NULL;
p = head;
while( (p1!=NULL)&&(p2!=NULL) )
{
if (p1->data == p2->data)
{
q = (struct Link *)malloc(sizeof(struct Link));
q->data = p1->data;
q->next = NULL;
p->next = q;
p = q;
p1 = p1->next;
p2 = p2->next;
}
else if (p1->data < p2->data)
{
p1 = p1->next;
}
else
{
p2 = p2->next;
}
}
return head;
}
//输出链表内容

void PrintLink(struct Link *head)
{
struct Link *p = head->next;
printf("\nThe data in link:");
while (p != NULL)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
}

int main(int argc, char* argv[])
{
struct Link *h1=NULL,*h2=NULL,*head=NULL;
h1 = CreateLink();
PrintLink(h1);
h2 = CreateLink();
PrintLink(h2);
head = Intersect(h1,h2);
PrintLink(head);
return 0;

}
全部回答
int i=0, j=0, m=0;
while(i{
if (A[i] < B[j])
i++;
else if (A[i] > B[j])
j++;
else
{
C[m++] = A[i];
i++;
j++;
}
}
这个貌似要用到数据结构的追问对啊,就是那上面的题追答viod Mergelist(List La,List Lb,List &Lc){
InitList(Lc);
i=j=1;k=0;
La_len=ListLength(La);Lb_len=ListLrngth(Lb);
while((i<=La_len)&&(j<=Lb_len)){
GetElem(La,i,ai);GetElem(Lb,j,bj);
if(ai<=bj){ListInsert(Lc,++k,aj);++i;}
else{ListInsert(Lc,++k,bj);++j;}
}
while(i<=La_len){
GetElem(La,i++,ai);ListInsert(Lc,++k,ai);
}
while(j<=Lb_len){
GetElem(Lb,j++,bi);ListInsert(Lc,++k,bj);
}
}追问麻烦再完整一点,我这基础真的驾驭不了,光主函数我不会用,另外操作环境是VC6.0
数据结构书上都有的。追问你能给编一下吗追答数据结构上的是思想,需要自己改成c或c++什么的。
单链表一个节点指向下一个节点,A每个元素和B比较,有相同的插入C表追问没基础啊,能说得简单点吗追答网上找下C单链表的信息吧,会指针的话很快能理解单链表,不会的话就用一般的线性表,你这里递增我不明白什么意思....无视这个递增的话,用数组也可以做...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有没有招聘打字员的,不要押金的
网易严选的质量怎么样,怎么用啊网易严选优惠
姐夫他哥哥我怎么称呼?
在上海4S买C,可以上外地牌否
单选题某DNA分子中,鸟嘌呤占嘌呤总数的40%
别不理我的情话,别去打扰一个正在放错的人这
给地壳打穿,在地核里引爆核弹能不能给地球炸
广州社保买不够一年可以过两年后转到佛山吗
微信名片儿的昵称怎么和,朋友圈儿的名字不相
上海银川路是什么地方
为什么越穷的地区越喜欢赌
红鸾是什么意思,红鸾星动是什么意思
芙蓉区长沙马坡岭街道办事处这个地址在什么地
关于1040连锁业什么是铺垫 邀约
我想问下,我想办移动宽带,如果我这个月用就缴
推荐资讯
英语语法:turn to里 to是否作介词
BLACKPINK的金智秀为什么叫大根
请问一下、人命关天…
刀剑英雄武尊和剑客哪个好
为什么我的NDS不能玩绘心教室!
如果发现自己太感性了怎么办
郑州郎酒旗舰店地址有知道的么?有点事想过去
龙泉驿区第二十五小学六年级一班的期末考试成
北京最好的古玩私下交易公司有吗?除古玩城
有关郦道远的《三峡〉和李白的《朝发白帝城》
长寿花多长时间开花,长寿花不开花的原因,长
民航飞机起飞时候的牵引力有多大
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?