C实现单链表的简单例子

小记

笔记

想着回顾一下C的基础知识,然后看到C的结构体数组和链表的部分,动手敲了一下,下面附上代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct s_node
{
    char name[256];
    int age;
    struct s_node *next;
};

struct s_node * create_number(int n){
    /*
        note:创建有n个节点的链表
    */
    int i;
    struct s_node *head,*new,*p;
    if(n>=1){
        /*
            note:生成头结点
        */
        new=malloc(sizeof(struct s_node));
        new->age=1;
        new->next=NULL;
        head=new;
        p=new;
    }
    for(i=2;i<n;i++){
        new=malloc(sizeof(struct s_node));
        new->age=i;
        new->next=NULL;
        p->next=new;
        p=new;
    }
    if(n>=1)
        return (head);
    else       
        return NULL;
}

void out_list(struct s_node *head){
    struct s_node *p;
    if(head!=NULL){
        p=head;
        while (p!=NULL)
        {
            printf("%d",p->age);
            p=p->next;
            printf("\n");
        }
        
    }
}
int main(){
	//这里敲一下结点的赋值
    struct s_node *p ,*q;
    p=malloc(sizeof(struct s_node));
    //p->name="zhangsan";           note:尽量规避这种写法,这种写法是错误的。
    strcpy(p->name,"zhangsan");
    p->age=18;
    printf("%s\n",p->name);
    printf("%d\n",p->age);

	
    q=create_number(20);
    out_list(q);
}

打印如下:
C实现单链表的简单例子_第1张图片

关于C的rand()生成随机数

引入:

#include 
#include 

写法:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){
    srand((unsigned int)time(0));//初始化种子为随机值
    int i = 0;
    for(;i < 5;++i){
        int num = rand() % 50 + 1;//产生一个1-50之间的数
        printf("%d ",num);
    }
    printf("\n");
    return 0;
}

若不设置srand或设置srand(1)的话只会产生相同的随机数

你可能感兴趣的:(C)