#include <stdio.h>
#include <stdlib.h>
typedef struct Node{
int adress;
int data;
int nextadress;
struct Node *Next;
}Node;
typedef struct Node *List;
int main(){
List L1,L,p,q;
int fadress,k,n;
scanf("%d %d %d",&fadress,&n,&k);
int i;
L1=(List)malloc(sizeof(Node));
L1->Next=NULL;
q=L1;
for(i=0;i<n;i++){
p=(List)malloc(sizeof(Node));
scanf("%d %d %d",&p->adress,&p->data,&p->nextadress);
q->Next=p;
q=p;
}
q->Next=NULL;
/*List t;
t=L1->Next;
while(t){
if(t->Next){
printf("%05d %d %05d\n",t->adress,t->data,t->nextadress);
}else{
printf("%05d %d %d\n",t->adress,t->data,t->nextadress);
}
t=t->Next;
}
printf("\n");*/
List newL,newp,newq,t;
newL=(List)malloc(sizeof(Node));
newL->Next=NULL;
newq=newL;
t=L1->Next;
for(i=k;i>=1;i--){
while(t){
if(t->data=https://bbs.csdn.net/topics/=i){
newp=(List)malloc(sizeof(Node));
newp->adress=t->adress;
newp->data=https://bbs.csdn.net/topics/t->data;
newp->nextadress=t->nextadress;
newq->Next=newp;
newq=newp;
break;
}else{
t=t->Next;
}
}
t=L1->Next;
}
for(i=k+1;i<=n;i++){
t=L1->Next;
while(t){
if(t->data=https://bbs.csdn.net/topics/=i){
newp=(List)malloc(sizeof(Node));
newp->adress=t->adress;
newp->data=https://bbs.csdn.net/topics/t->data;
newp->nextadress=t->nextadress;
newq->Next=newp;
newq=newp;
break;
}else{
t=t->Next;
}
}
}
newq->Next=NULL;
List L2,x1,x2;
x1=newL->Next;
x2=x1->Next;
L2=newL;
for(i=0;i<n;i++){
if(x2->Next){
x1->nextadress=x2->adress;
L2->Next=x1;
L2=x1;
x1=x1->Next;
x2=x2->Next;
}
}
x1->nextadress=x2->adress;
L2->Next=x1;
L2=x1;
x1=x1->Next;
L2->Next=x1;
L2=x1;
L2->Next=NULL;
List f;
f=newL->Next;
while(f){
if(f->Next){
printf("%05d %d %05d\n",f->adress,f->data,f->nextadress);
}else{
printf("%05d %d %d\n",f->adress,f->data,f->nextadress);
}
f=f->Next;
}
return 0;
}
我在自己的ide上運行 得到的答案跟案例是一樣的 一提交 就提示段錯誤.....小白求指導

這是我編譯器上面運行的結果

題目要求的其中一個案例
uj5u.com熱心網友回復:
求大佬指點啊QAQuj5u.com熱心網友回復:
uj5u.com熱心網友回復:
說一下需求吧uj5u.com熱心網友回復:
List L2,x1,x2;x1=newL->Next;
x2=x1->Next;
L2=newL;
for(i=0;i<n;i++){
if(x2->Next){
80行前后這一段,你能確保newL當中至少有兩個元素嗎?
如果只有一個元素的話,x2 = x1->next, x2就是NULL, for回圈里面的x2->next就是錯誤訪問了
uj5u.com熱心網友回復:
我改了一下這部分代碼
List L2,x1,x2,x3;
x1=newL->Next;
L2=(List)malloc(sizeof(Node));
L2->Next=NULL;
x2=L2;
while(x1){
x3=(List)malloc(sizeof(Node));
x3->adress=x1->adress;
x3->data=https://bbs.csdn.net/topics/x1->data;
if(x1->Next){
x3->nextadress=x1->Next->adress;
}else{
x3->nextadress=-1;
}
x2->Next=x3;
x2=x3;
x1=x1->Next;
}
x2->Next=NULL;
段錯誤的問題是沒了 但是我自己運行跟樣例是一樣的 提交還是錯誤..
我改了一下這部分代碼
List L2,x1,x2,x3;
x1=newL->Next;
L2=(List)malloc(sizeof(Node));
L2->Next=NULL;
x2=L2;
while(x1){
x3=(List)malloc(sizeof(Node));
x3->adress=x1->adress;
x3->data=https://bbs.csdn.net/topics/x1->data;
if(x1->Next){
x3->nextadress=x1->Next->adress;
}else{
x3->nextadress=-1;
}
x2->Next=x3;
x2=x3;
x1=x1->Next;
}
x2->Next=NULL;

自己測驗的資料是對的 但是提交了就是錯誤的....
uj5u.com熱心網友回復:
求大佬幫我看一下我的代碼什么地方有問題!!
這道題我想用純鏈表做...
79行到105行的代碼我改過了
List L2,x1,x2,x3;
x1=newL->Next;
L2=(List)malloc(sizeof(Node));
L2->Next=NULL;
x2=L2;
while(x1){
x3=(List)malloc(sizeof(Node));
x3->adress=x1->adress;
x3->data=https://bbs.csdn.net/topics/x1->data;
if(x1->Next){
x3->nextadress=x1->Next->adress;
}else{
x3->nextadress=-1;
}
x2->Next=x3;
x2=x3;
x1=x1->Next;
}
x2->Next=NULL;
List f;
f=L2->Next;
uj5u.com熱心網友回復:
說一下需求,是指代碼的需求,就是這個代碼是實作什么什么的。
樓主的代碼最好能定義多個函式,不要都寫到main函式里,代碼可讀性不好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131835.html
標籤:C語言
