#include<stdio.h>
#include<conio.h>#define LIST_INT_SIZE 1000
#define ERROR 0
#define OK 1typedef struct {
int *elem
int length
int listsize
}ListSqtypedef int StatusStatus Initlist_sq(ListSq *l){
//初始化顺序表
l->elem=(int *)malloc(LIST_INT_SIZE*sizeof(int))
if(!l->elem) exit(ERROR)
l->length =0
l->listsize=LIST_INT_SIZE
return OK
}Status InputList_sq(ListSq *l,int length){
//对顺序表进行输入,输入的长度为:length
//length的区间为[1,1000]
int i
if(length >1000 ||length<1) exit(ERROR)
printf("please input the data:\n")
for(i=0i<lengthi++){
scanf("%d",l->elem+i)
l->length++
}
return OK
}Status OutputList_sq(ListSq *l){
//把顺序表输出
int *p
for(p=l->elemp<=&(l->elem[l->length-1])p++)
printf("%d ",*p)
return OK
}Status ListDelete_sq(ListSq *l,int i){
//删除顺序表中位序为i的元素
//注意i的取值范围!
int *p,*pe
if(i<1 || i>1000) exit(ERROR)
p=&(l->elem[i+1])
pe=&(l->elem[l->length-1])
while(p<=pe){
*(p-1)=*p
p++
}
l->length--
return OK
}Status ConvertList_sq(ListSq *l){
//这个操作就是执行你题目要求的那玩意
int i,j,k
for(i=0i<l->lengthi++){
k=i
for(j=0j<ij++)
if(l->elem[i]==l->elem[j])
ListDelete_sq(l,i)
}
return OK
}
int main(void)
{
ListSq list
int length,status
printf("Creat a new SQlist:\n")
status=Initlist_sq(&list)
if(!status)
{
printf("\aWarning:Failed to Creat the List\n")
getch()
exit(ERROR)
}
else {
printf("succeed to creat!\n")
printf("******** status of the list *********\n")
printf("the length is %d\nthe listsize is %d\n",list.length,list.listsize)
}
printf("Now you could input the data for the list:\n")
printf("How many datas do you want to input:")scanf("%d",&length)
InputList_sq(&list,length)
OutputList_sq(&list)
printf("\nthe result of converting list:")
ConvertList_sq(&list)
OutputList_sq(&list)
putchar('\n')
return 0
}一下是运行结果: 好了,完成任务了。。。算法不难,认真思考就搞定,望楼主坚持下去,不断努力!
对了,要是程序上有什么不懂得,hi我就可以了
do{
printf("%d ",p->data)
p=p->next
}while((p->next)!=NULL)
上面改为:
do
{
printf("%d ",p->data)
p=p->next
}while(p!=NULL)