⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 实验二.txt

📁 单链表的插入和删除实验目的: 1、定义单链表的结点类型 2、通过单链表的定义掌握线性表的链式存储结构的特点; 3、熟悉单链表的建立以及插入、删除等基本操作。
💻 TXT
字号:
# include <stdio.h>
# include<malloc.h>
# define ND sizeof(struct List)
struct List
{int data;
 struct List *next;
};
void main()
{ int n,i=1,e,a;
  struct List *head;
  struct List *p,*q; 
   q=head=p=(struct List *)malloc(ND);
   printf("输入链表的节点数:");
   scanf("%d",&n);
   printf("输入第1个结点的数据:");
   scanf("%d",&p->data);
         i++;
       while(i<=n)
	 { q=(struct List *)malloc(ND);
	          p->next=q;
	   printf("输入第%d个结点的数据:",i);
       scanf("%d",&q->data);
	           p=q;
	           i++;                                                   
	 }                                          /*从键盘输入链表数据*/ 
          q->next=NULL;
             q=p=head;
		            printf("所输入的链表数据:");
			        while(p!=NULL)
				   {   printf("%6d",p->data);
				          p=p->next;
				   }
					  printf("\n");
				      printf("输入要删除第几个结点:");
					   scanf("%d",&e);
                         p=head;
						 i=1;
					     if(e>n||e<1)
						 {  printf("ERROR!!!!!!!\n");
						      return;
						 }
						 else
						 {      if(e==1)
						 {       p=p->next;
						         free(head);
								 head=p;
						 }
						        else
								{   while(p->next&&i<e-1)
								{      p=p->next;
								        i++;
								}
								    q=p->next;
									p->next=q->next;
									free(q);
								    p=head;
								}
						 }                                       /*删除链表中指定的结点*/
                         	printf("删除后的链表数据:");
			                    while(p!=NULL)
								{    printf("%6d",p->data);
				                             p=p->next;
								}
					            printf("\n输入要在第几个结点前插入:");
                                scanf("%d",&e);
                                printf("输入所要插入的数据:");
					            scanf("%d",&a);
					              p=head;
					                 i=1;
                                if(e>n||e<1)
								{ printf("ERROR!!!!!!!\n");
								    return;
								}
								
					            else
							   {  if(e==1)
							   {     q=(struct List *)malloc(ND);
						              q->data=a;
									  q->next=p;
									  head=p=q;
							   }
						          else 
								 { while(p->next&&i<e-1)
								   {        p=p->next;
						                       i++;
								   }
                                      q=(struct List *)malloc(ND);
						              q->data=a;
						              q->next=p->next;
                                      p->next=q;
									  p=head;
								 }
							   }                                    /*在指定结点前插入新结点*/
					  printf("插入结点后的链表:");
			              while(p!=NULL)
						  {     printf("%6d",p->data);
				                     p=p->next;
						  }
                                     printf("\n");
}



						   


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -