还有就是自己多看看书 自己多想想代码
#include <stdio.h>
#include <stdlib.h>
typedef int elemtype
typedef struct xianxing
{
struct xianxing *next
elemtype number
}ST
ST *Init_SequenList()//实现初始化一个线性表的函数
{
ST *L
L = (ST *)malloc(sizeof(ST))
L->next = NULL
return L
}
ST * add_head(ST *head)//实现往链表内添加数字函数 按照升顺序的
{
ST *q ,*p
p = head
q = (ST *)malloc(sizeof(ST))
printf("请输入你要添加的数:")
scanf("%d",&q->number)
if(p->next == NULL)
{
q->next = p->next
p->next = q
}
else
{
while(p->next->number <q->number)//比较大小 找到插入的位置
{
p = p->next
}
q->next = p->next
p->next = q
}
return head
}
void show_head(ST *head)//显示链表
{
ST *p
p = head
while(p->next)
{
printf("%d\n",p->next->number)
p = p->next
}
}
void main()
{
ST *head
int n //n个元素
printf("请输入你要创建几个元素:")
scanf("%d",&n)
head = Init_SequenList()//初始化一个线性表
while(n)
{
head = add_head(head)//往线性表里添加数
n--
}
show_head(head)//显示链表
}
你传入init函数的参数是传值调用,所以init函数中不会修改main()函数中定义的变量,修改如下://---------------------------------------------------------------------------
#include<stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType[LIST_INIT_SIZE]
typedef struct {
ElemType *elem
int length
int listsize
}SqList
typedef int Status
int InitList_Sq(SqList *L) /*注意这里*/
{
L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType))/*注意这里*/
if(!L->elem){return 0} /*注意这里*/
L->length=1 /*注意这里*/
printf("%d\n",L->length) /*注意这里*/
L->listsize=LIST_INIT_SIZE /*注意这里*/
return 1
}
int main()
{
SqList p={NULL} /*注意这里*/
InitList_Sq(&p) /*注意这里*/
printf("%d\n",p.length)
return 0
}
//---------------------------------------------------------------------------