各位大虾,在写程序时,为什么总喜欢将原函数写出来,是不是有点多此一举
你是说系统的函数吗?应该没有吧,程序当然是能简则简 。
可能是增加行数,据说行业的规定是按照程序的行数给钱的~
呵呵
就像下面这些代码一样,它出现的原函数不是系统函数:
#include <stdio.h>
#include <stdlib.h>
#define LISTSIZE 10
#define INCREMENT 10
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
static void InitialList(SqList *L);/*
static void CreateList(SqList *L);
static void DeleteElem(SqList *L); 这些是原函数吗?
static void VisitList(SqList L);
static void DestroyList(SqList *L);*/
int main(void)
{
SqList L;
InitialList(&L); /* 顺序表初始化*/
CreateList(&L); /* 创建顺序表 */
VisitList(L); /* 打印创建后的顺序表 */
DeleteElem(&L); /* 删除顺序表中的相同元素 */
VisitList(L); /* 打印删除后的顺序表 */
DestroyList(&L); /* 销毁顺序表 */
return 0;
}
static void InitialList(SqList *L)
{
if ((((*L).elem = (int*)malloc(sizeof(int) * LISTSIZE))) == NULL)
{
exit(1);
}
(*L).length = 0;
(*L).listsize = LISTSIZE;
}
static void CreateList(SqList *L)
{
int n, i;
printf("Enter elemenet number n: ");
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &(*L).elem[(*L).length++]);
if ((*L).length >= (*L).listsize)
{
if ((((*L).elem = (int*)realloc((*L).elem, sizeof(int) * ((*L).listsize + INCREMENT)))) == NULL)
{
exit(1);
}
}
}
}
static void DeleteElem(SqList *L)
{
int i, j, *p, *q;
for (i = 0; i < (*L).length - 1; i++)
{
for (j = i + 1; j < (*L).length; j++)
{
if ((*L).elem[i] == (*L).elem[j])
{
p = &(*L).elem[j];
for (q = p + 1; q < &(*L).elem[(*L).length]; q++)
{
*(q - 1) = *q;
}
(*L).length--;
}
}
}
}
static void VisitList(SqList L)
{
int i;
for (i = 0; i < L.length; i++)
{
printf("%d ", L.elem[i]);
}
printf("\n");
}
static void DestroyList(SqList *L)
{
if ((*L).elem != NULL)
{
free((*L).elem);
(*L).elem = NULL;
}
(*L).length = 0;
}
不好意思,有点菜,很都东西不是很清楚.