int change1(slink *head1,slink *head2){
slink *p,*q;
int a[10],j=0,m,n,t;
for(p=head1->next;p!=NULL;p=p->next){
for(q=head2->next;q!=NULL;q=q->next)
if(p->data=https://bbs.csdn.net/topics/=q->data){
a[j]=p->data;
j++;
}
}
uj5u.com熱心網友回復:
a[j]=p->data; // j 是否保證小于10 ?uj5u.com熱心網友回復:
這應該是對比兩個單鏈表,找出其相同元素存入一維陣列中。那么,鏈表中存盤的資料型別是否為int,這段代碼中無法看出。
是否應該加一行:typedef int slink;
uj5u.com熱心網友回復:
是的呀
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}slink;
uj5u.com熱心網友回復:
#include <stdio.h>
//如果頭檔案沒有問題的話,那可能是編譯器的問題,我這里運行沒有error提示
uj5u.com熱心網友回復:
這應該是對比兩個單鏈表,找出其相同元素存入一維陣列中。
那么,鏈表中存盤的資料型別是否為int,這段代碼中無法看出。
是否應該加一行:typedef int slink;
是的呀
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}slink;
#include <stdio.h>
//如果頭檔案沒有問題的話,那可能是編譯器的問題,我這里運行沒有error提示
我的檔案拓展名是. c不是. cpp
uj5u.com熱心網友回復:
這應該是對比兩個單鏈表,找出其相同元素存入一維陣列中。
那么,鏈表中存盤的資料型別是否為int,這段代碼中無法看出。
是否應該加一行:typedef int slink;
是的呀
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}slink;
#include <stdio.h>
//如果頭檔案沒有問題的話,那可能是編譯器的問題,我這里運行沒有error提示
鏈表創建呢?沒有創建直接用鏈表怎么可以呢?
uj5u.com熱心網友回復:
這應該是對比兩個單鏈表,找出其相同元素存入一維陣列中。
那么,鏈表中存盤的資料型別是否為int,這段代碼中無法看出。
是否應該加一行:typedef int slink;
是的呀
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}slink;
#include <stdio.h>
//如果頭檔案沒有問題的話,那可能是編譯器的問題,我這里運行沒有error提示
鏈表創建呢?沒有創建直接用鏈表怎么可以呢?
#include<stdio.h>typedef int ElemType;typedef struct node{ ElemType data; struct node *next;}slink;slink* crelink1(int n){ slink *p,*head,*s; int i; p=head=(slink*)malloc(sizeof(slink)); for(i=1;i<=n;i++){ s=(slink*)malloc(sizeof(slink)); p->next=s; scanf("%d",&s->data); p=s; } p->next=NULL; return head; }slink* crelink2(int n){ slink *p,*head,*s; int i,a[10]; p=head=(slink*)malloc(sizeof(slink)); for(i=0;i<n;i++){ s=(slink*)malloc(sizeof(slink)); p->next=s; a[i]=p->data; p=s; } p->next=NULL; return head; } void list(slink *head){ slink *p; p=head->next; printf("The list is "); while(p!=NULL){ printf("%d\t",p->data); p=p->next; }}int change1(slink *head1,slink *head2){ slink *p,*q; int a[10],j=0,m,n,t; for(p=head1->next;p!=NULL;p=p->next){ for(q=head2->next;q!=NULL;q=q->next) if(p->data<=q->data){ a[j]=p->data; j++; } } for(m=0;m<j;m++){ for(n=1;n<=j;n++){ if(a[n]>a[m]){ a[n]=t; t=a[m]; a[m]=t; } } } return j; }main(){ slink *SL1,*SL2,*SL3; int i,j; printf("Input slink1 number:"); scanf("%d",&i); SL1=crelink1(i); list(SL1); printf("\nInput slink2 number:"); scanf("%d",&j); SL2=crelink1(j); list(SL2); printf("\n處理后為:"); SL3=crelink2(change1(&SL1,&SL2)); list(SL3);}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/90287.html
標籤:C語言
上一篇:用C語言 從鍵盤輸入任意10個整數存放到陣列 a中,然后利用回圈輸出各個元素值。
下一篇:資料結構鏈表問題
