#include<stdio.h>
#define MaxSize 10 typedef struct sqlist{ int data[MaxSize]; int length; }Sqlist;
void InitList(Sqlist *L){ int i; for(i=0;i<MaxSize;i++) L->data[i]=0; L->length=0; }
void keshihua(Sqlist *L){ int i; for(i=0;ilength;i++){ printf("%d ",L->data[i]); } printf("\n"); }
int main(){ void keshihua(Sqlist *L); void InitList(Sqlist *L); int j; int x,k; Sqlist *a; InitList(a);
a->data[0]=1;
a->data[1]=2;
a->data[2]=3;
a->data[3]=3;
a->data[4]=4;
a->data[5]=6;
a->data[6]=6;
a->data[7]=6;
a->data[8]=7;
a->data[9]=8;
a->length=10;
k=0;
x=a->data[0];
for(j=1;j<MaxSize;j++){
if(x!=a->data[j]){
a->data[j-k]=a->data[j];
x=a->data[j];
}
else
k++;
}
a->length=(a->length)-k;
keshihua(a);
}
你主要是没有给结构体指针分配空间
a = (Sqlist *)malloc(sizeof(Sqlist ));
代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
#include<stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef struct sqlist{
int data[MaxSize];
int length;
}Sqlist;
void InitList(Sqlist *L){
int i;
for(i=0;i<MaxSize;i++)
L->data[i]=0;
L->length=0;
}
void keshihua(Sqlist *L){
int i;
for(i=0;i<L->length;i++){
printf("%d ",L->data[i]);
}
printf("\n");
}
int main(){
void keshihua(Sqlist *L);
void InitList(Sqlist *L);
int j; int x,k;
Sqlist *a;
a = (Sqlist *)malloc(sizeof(Sqlist ));
InitList(a);
a->data[0]=1;
a->data[1]=2;
a->data[2]=3;
a->data[3]=3;
a->data[4]=4;
a->data[5]=6;
a->data[6]=6;
a->data[7]=6;
a->data[8]=7;
a->data[9]=8;
a->length=10;
k=0;
x=a->data[0];
for(j=1;j<MaxSize;j++){
if(x!=a->data[j]){
a->data[j-k]=a->data[j];
x=a->data[j];
}
else
k++;
}
a->length=(a->length)-k;
keshihua(a);
}
问题挺多的,代码给你改了,如有帮助,请帮忙采纳一下,谢谢。
#include<stdio.h>
#include <stdlib.h>
#define MaxSize 10
typedef struct sqlist
{
int data[MaxSize];
int length;
}Sqlist;
void InitList(Sqlist *L){ int i; for(i=0;i<MaxSize;i++) L->data[i]=0; L->length=0; }
void keshihua(Sqlist *L){ int i; for(i=0;i<L->length;i++){ printf("%d ",L->data[i]); } printf("\n"); }
int main(){
void keshihua(Sqlist *L);
void InitList(Sqlist *L);
int i,j,t;
//int x,k;
Sqlist *a = (Sqlist*)malloc(sizeof(Sqlist));
InitList(a);
a->data[0]=1;
a->data[1]=2;
a->data[2]=3;
a->data[3]=3;
a->data[4]=4;
a->data[5]=6;
a->data[6]=6;
a->data[7]=6;
a->data[8]=7;
a->data[9]=8;
a->length=10;
for(j=1;j<a->length;j++)
{
for (i=0;i<j;i++)
{
if (a->data[i] == a->data[j])
{
//前移
for (t= j;t<a->length-1;t++)
{
a->data[t] = a->data[t+1];
}
a->length -= 1;
j--; //回退一下
}
}
}
//a->length=(a->length)-k;
keshihua(a);
free(a);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!