读书人

顺序表的变量定义有关问题请大家帮帮

发布时间: 2012-03-29 12:53:12 作者: rapoo

顺序表的变量定义问题,请大家帮帮看看
#include<stdio.h>
#define MaxSize 100
/*定义顺序表*/
typedef struct
{
int list[MaxSize];
int size;
}SeqList;
/*初始化*/
void ListInitiate(SeqList *L)
{
L->size=0;
}
/*求元素个数*/
......
......
/*主函数 */
void main()
{
SeqList mylist;
int i=0,x=0,length=0;
int choice,position;
ListInitiate(&mylist);
for(;;)
{
i=0,x=0;

printf("\t\t* 1.输入结点 *\n");
printf("\t\t* 2.结点个数 *\n");
printf("\t\t* 3.插入结点 *\n");
printf("\t\t* 4.输出结点 *\n");
printf("\t\t* 5.删除结点 *\n");
printf("\t\t* 6.退出系统 *\n");

printf("\t\t请输入你的选择项:");
scanf("%d",&choice);
switch(choice)
{
case 1:
printf("\t\t请输入数据(数字):");
for(i=0;i<5;i++) {
scanf("%d",&x);
ListInsert(&mylist,i,x);
}
break;
case 2:
length=ListLength(mylist);
printf("\t\t结点个数:%d\n",length);
break;
case 3:
printf("\t\t请输入你要插入结点的位置:");
scanf("%d",&position);
printf("\n");
printf("\t\t请输入你要插入的数据:");
scanf("%d",&x);
printf("\n");
ListInsert(&mylist,position,x);
break;
case 4:
printf("\t\t请输入要输出结点的位置:");
scanf("%d",&position);
printf("\n");
ListGet(&mylist,position,&x);
printf("\t\t该位置结点数据是:%d\n",x);
break;
case 5:
printf("\t\t请输入你要删除结点的位置:");
scanf("%d",&position);
printf("\n");
ListDelete(&mylist,position,&x);
printf("\t\t您删除了:%d\n",x);
break;
case 6:exit(1);break;
default: printf("\t\t输入错误!\n");
}
}
}

以上是一个顺序表的建立删除查找的示例,我有几个地方不是太清楚,想问问大家:
main函数中 SeqList mylist;这个定义是什么意思呢?因为我看的是谭浩强的书上似乎没这样的定义。
同样的,程序中有大量出现ListInitiate(SeqList *L)类似于(SeqList *L)这样的写法,seqlist作为结构变量指针函数的话只要写成*seqlist也可以吧?类似红字的定义同样没在书上能够找到。刚看完谭的书,现在看数据结构,感觉突然有些不适应,请大家帮助

[解决办法]
请注意前面已经定义了结构体变量的同义词:
typedef struct SeqList
{
int list[MaxSize];
int size;
}SeqList;

因此,这样的定义SeqList mylist;等价于struct SeqList mylist;
我在struct 后面加了一个结构体标记SeqList.
这样可以在后面通过使用struct SeqList(结构体标记名)来声明或定义结构体变量.

同样,SeqList *L;也相当于struct SeqList *L; 它是一个结构体指针.

读书人网 >C语言

热点推荐