线性链表基础(c语言)2019-3.12

        线性链表是一种动态的储存数据的数据结构,特点是存储的数据地址可以是连续的也可以是不连续的。

一个存储位置叫一个节点,每个节点包含下个节点的位置,所以是一条链; 

        在定义链表前要掌握malloc()函数,这个函数返回的是一个无类型地址;

1:定义一个双节点的链表

       

#include 
#include 
struct doub{
   	int data1;
   	int data2;
    struct doub *next;
   };//定义结构体 
   struct doub *head,*back;
    main(int argc, char *argv[]) {
    head=(struct doub *)(malloc(sizeof(struct doub)));
    head->data1=10;
	head->data2=20;
	back=(struct doub *)(malloc(sizeof(struct doub)));
	head->next=back;
	back->data1=20;
	back->data2=10;
	back->next=NULL;    
    struct doub *p;
	p=head;	
   	while(p!=NULL){
	printf("%d,%d",p->data1,p->data2);
	      p=p->next;       
   }
}

2.多节点链表程序,输入节点数,然后往节点输入数据:

#include 
#include 
struct test {
	char c[10];
	int math;
	int english;
	struct test *next;
};                          //定义结构体
struct test *head;        //因为两个函数都要用到*head所以定义在函数外
void fncreate() {
	struct test *front,*back;    //创建指针指向当前与最后
	int temp=0,i=0;//定义循环用变量
	scanf("%d",&temp); //输入链表有几个节点
	for(i; inext=front; //如果i等于一说明了是第一个节点所以赋值给head指针,不是一的话就是当前链表最后节点的下一个节点;
		scanf("%s %d %d",(*front).c,&(*front).english,&(*front).math);//输入值
		front->next=NULL;//将当前节点的下一个节点地址置空
		back=front;//将当前节点作为最后节点
	}
}
void fnpoint() {
	struct test *front;
	front=head;
	while(front!=NULL) {
		printf("%s,%d,%d\n",front->c,front->english,front->math);
		front=front->next;
	}
}
int main(int argc, char *argv[]) {
	fncreate();
	fnpoint();
	return 0;
}


记:结构体指针引用变量方法 (*pstr).成员;pstr->成员;

你可能感兴趣的:(线性链表基础(c语言)2019-3.12)