C语言中初始化线性表,并从键盘输入值

Python019

C语言中初始化线性表,并从键盘输入值,第1张

数据结构 如果只建立线性表 那是不能使表保持顺序的 只有链表才能 所以我用了链表

还有就是自己多看看书 自己多想想代码

#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

}

//---------------------------------------------------------------------------