我有这个学校的功课要做,因为我被要求做的功能,我感到很困惑。它与我单链表的风格不同。
我单独链接列表如下:
typedef struct structNode{
int data;
struct structNode *next;
} node;
typedef struct structList{
int count;
struct structNode *head, *tail;
} list;
void insertFront(list *L, int x);
void insertRear(list *L, int x);
void insertAt(list *L, int x, int p);
void deleteFront(list *L);
void deleteRear(list *L);
void deleteAt(list *L, int p);
void displayAll(list *L);
所有参数都在接收指针但我的作业需要我这样做我的代码:
typedef struct node *nodePtr;
struct node {
int item;
nodePtr next;
};
typedef nodePtr Statistician;
Statistician newStatistician();
//allocates memory to the structure. Dynamic allocation
void destroyStatistician(Statistician *s);
//destroys statistician
void add(Statistician s, int x);
//Adds data to the rear
void remove(Statistician s, int x);
//removes data
void displayData(Statistician s);
所以我很困惑,因为我过去常常接收指针而家庭作业风格不同。
我认为具有接收指针的那个是通过引用调用,这就是为什么我在本地编辑的内容可以全局编辑...
还有我的结构实现与我必须做的不同?
答案 0 :(得分:3)
统计学家是一个指针。它的typedef为nodePtr,而nodePtr又被定义为node *。所以传递统计学家实际上是在传递一个节点*。
从可用性的角度来看,使指针看起来像非指针是否明智是一个不同的问题。