Skip to content
c
#include<stdio.h>
#include<malloc.h>
typedef struct node                      /*定义结点的存储结构*/
{
    int data;
    struct node *next;
}NODE;

NODE *create()                        /*此函数采用后插入方式建立单链表,并返回一个指向链表表头的指针*/
{
    NODE *head,*q,*p;                 /*定义指针变量*/
    int a,n;
    head=(NODE*)malloc(sizeof(NODE));  /*申请新的存储空间,建立表头结点*/
    q=head;
    printf("\nInput number of the list: ");
    scanf("%d",&n);                          /*输入单向链表结点个数*/
    if(n>0)                                  /*若n<=0,建立仅含表头结点的空表*/
    {
		printf("Input the list :");
        while(n>0)
        {
	          scanf("%d",&a);                  /*输入新元素*/
            p=(NODE*)malloc(sizeof(NODE));
            p->data=a;
            q->next=p;
            q=p;
            n--;
        }
    }
    q->next=NULL;
    return(head);                           /*返回表头指针head*/
}

void insert(NODE *p,int x)             /*在链表的p结点位置后插入给定元素x*/
{
    NODE *q;
    q=(NODE*)malloc(sizeof(NODE));  /*申请新的存储空间*/
    q->data=x;
    q->next=p->next;                 /*实现图2.9(b)的①*/
    p->next=q;                      /*实现图2.9(b)的②,将新结点q链接到p结点之后*/
}

main()                  /*主程序*/
{
   int x,position;         /*x为将插入的元素,position为插入位置的序号*/
   int i=0,j=0;
   NODE *c,*d;
   c=create();           /*建立单向链表*/
   d=c->next;
   while(d!=NULL)      /*统计单向链表中结点数,置j中*/
   {
       d=d->next;
       j++;
   }
   d=c;
   do
   {
       printf("Input position (again):");
       scanf("%d",&position);         /*position可为0,表示表头结点*/
   }while((position>j)||position<0);     /*position值超过单向链表结点数,重新输入*/
   printf("Input x:");
   scanf("%d",&x);
   while(i!=position)                 /*由position值确定其在单向链表中的位置d*/
   {
       d=d->next;
       i++;
   }
   insert(d,x);
   printf("Output the list:");
   while(c->next!=NULL)            /*输出插入x后的单向链表各元素*/
   {
       c=c->next;
       printf("%5d",c->data);
   }
   printf("  ok");
}

Layout Switch

Adjust the layout style of VitePress to adapt to different reading needs and screens.

Expand all
The sidebar and content area occupy the entire width of the screen.
Expand sidebar with adjustable values
Expand sidebar width and add a new slider for user to choose and customize their desired width of the maximum width of sidebar can go, but the content area width will remain the same.
Expand all with adjustable values
Expand sidebar width and add a new slider for user to choose and customize their desired width of the maximum width of sidebar can go, but the content area width will remain the same.
Original width
The original layout width of VitePress

Page Layout Max Width

Adjust the exact value of the page width of VitePress layout to adapt to different reading needs and screens.

Adjust the maximum width of the page layout
A ranged slider for user to choose and customize their desired width of the maximum width of the page layout can go.

Content Layout Max Width

Adjust the exact value of the document content width of VitePress layout to adapt to different reading needs and screens.

Adjust the maximum width of the content layout
A ranged slider for user to choose and customize their desired width of the maximum width of the content layout can go.

Spotlight

Highlight the line where the mouse is currently hovering in the content to optimize for users who may have reading and focusing difficulties.

ONOn
Turn on Spotlight.
OFFOff
Turn off Spotlight.