69,371
社区成员
发帖
与我相关
我的任务
分享
/*链表结点定义和链表创建和取元素操作*/
struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreateList_L(LinkList *L,int n) /*创建链表直接使用单重指针就可以了啊,
参数列表应该是LNode *L或者LinkList L,为什么要使用双重呢,使用双重指针
存放指针的地址,改变指针的值有什么作用,这个初始化过程从指针的地址传
进来是怎么继续下去的呢?*/
{
int i;
LinkList p;
*L=(LinkList)malloc(sizeof(struct LNode));
(*L)->next=NULL;
for(i=n; i>0; --i)
{
p=(LinkList)malloc(sizeof(struct LNode));
scanf("%d",&p->data);
p->next=(*L)->next;
(*L)->next=p;
}
}
Status GetElem(LinkList L,int i,ElemType *e) /*取元素不改变原值参数列表
应该像顺便表取元素值一样不用指针,用LNode L,为什么要使用指针?*/
{
int j=1;
LinkList p=L->next;
while(p&&j<i)
{
p=p->next;
j++;
}
if(!p||j>i)
return ERROR;
*e=p->data;
return OK;
}
/*以下为顺序表初始化和取元素操作*/
typedef struct
{
ElemType *elem;
int length;
int listsize;
}SqList;
Status InitList_Sq(SqList *L)//初始化改变原值用指针
{
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem) exit(OVERFLOW);
L->length=0;
L->listsize=LIST_INIT_SIZE;
return OK;
}
int GetElem(SqList L,int i,ElemType *e)//取元素不改变原值,参数列表不用指针
{
if(i<1||i>L.length) return 0;
*e=L.elem[i-1];
return 1;
}
typedef struct LNode{
ElemType data;
struct LNode *next;
}LinkList;
void CreateList(LinkList *&L ,int n)
{
int i=0;
LInkList *s;
L = (LinkList *)malloc(sizeof(LinkList));
L -> next = NULL;
for(i = 0; i < n ; i++)
{
s = (LinkList *)malloc(sizeof(LinkList));
s -> next = L -> next;
L ->next = s;
}
}