#include<stdio.h>
#include <stdlib.h>
typedef struct LNode
{ int data;
struct LNode *next;
} LinkNode;
int a[50];
void CreateList(LinkNode *L,int a[] ,int n)
{ LinkNode *s,*r;
int i;
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
r=L;
for(i=0;i<n;i++)
{ s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=https://bbs.csdn.net/topics/a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
int ListDelete(LinkNode *L,int x)
{
int j=0;
LinkNode *p=L,*q;
if(L->next==NULL)
return 0;
else{
while(p->next!=NULL){
if((p->next)->data=https://bbs.csdn.net/topics/=x){
q = p->next;
p->next = q->next;
free(q);
j++;
}
else
p=p->next;
}
return j;}
}
int main()
{
LinkNode L;
int x,i,n,k;
scanf("%d %d",&x,&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
CreateList(&L,a,n);
k=ListDelete(&L,x);
printf("%d",a[0]);
if(k!=0){
for(i=0;i<k;i++)
printf("%d ",a[i]);
}
else
printf("NULL");
return 0;
}
uj5u.com熱心網友回復:
#include<stdio.h>#include <stdlib.h>
typedef struct LNode
{ int data;
struct LNode *next;
} LinkNode;
int a[50];
LinkNode * CreateList(int a[] ,int n)
{
LinkNode *s,*r, *L;
int i;
L=(LinkNode *)malloc(sizeof(LinkNode));
L->next=NULL;
r=L;
for(i=0;i<n;i++)
{ s=(LinkNode *)malloc(sizeof(LinkNode));
s->data=https://bbs.csdn.net/topics/a[i];
r->next=s;
r=s;
}
r->next=NULL;
return L;
}
int ListDelete(LinkNode *L,int x)
{
int j=0;
LinkNode *p=L,*q;
if(L->next==NULL)
return 0;
else{
while(p->next!=NULL){
if((p->next)->data=https://bbs.csdn.net/topics/=x){
q = p->next;
p->next = q->next;
free(q);
j++; // j是什么意思? 串列當中有多個x存在嗎? 如果是還需要一句 p=p->next;在這里
}
else
p=p->next;
}
return j;
}
}
void ListPrint(LinkNode * L){
if ( L && L->next) {
printf("List datas:\n");
LinkNode * p = L;
while ( p->next ) {
printf("%d ", p->next->data);
p = p->next;
}
printf("\n");
} else {
printf("\n --- Empty List ----- \n");
}
}
int main()
{
LinkNode *L;
int x,i,n,k;
scanf("%d %d",&x,&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
L = CreateList(a,n);
ListPrint(L);
k=ListDelete(L,x);
ListPrint(L);
printf("%d",a[0]);
if(k!=0){
for(i=0;i<k;i++)
printf("%d ",a[i]);
}
else
printf("NULL");
return 0;
}
uj5u.com熱心網友回復:
不知道你的ListDelete當中回傳值的意思,沒有動它自己改吧
主要問題是CreateList函式的時候,L并不能通過引數回傳,所以串列沒有創建成功
增加了一個ListPrint函式,方便查看創建后和洗掉后的佇列情況
ListDelete回傳值要做什么, 不明朗,很奇怪
uj5u.com熱心網友回復:
就是通過ListDelete函式回傳洗掉值為x的結點后剩余的結點數,用j來計數;請問一下,怎么樣做可以通過各個函式時可以讓L引數回傳,運行程式沒有輸出。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/118673.html
標籤:C語言
下一篇:題目:以該線性表(1,2,3,4,5,6,7,8,9,10)為測驗資料, 請撰寫主函式,測驗本講義中順序表的9個基本演算法,體領會演算法的基本思想。
