单链表C语言代码实现

一、代码

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

typedef int ElemType;

typedef struct Lnode{
	ElemType data;
	struct Lnode *next;
}Lnode,*LinkList;

void create(LinkList &L);
void insert(LinkList &L); 
void outlin(LinkList &L);
void deleter(LinkList &L);

int main(){
	int cord;
	LinkList L;
	LinkList p;
	do
        {
                printf("\n                主菜单\n");
                printf("        1        建立单链表\n");
                printf("        2        插入一个元素\n");
                printf("        3        删除一个元素\n");
                printf("        4        结束程序\n");
                printf("-------------------------\n");
                printf("请输入您的选择(1,2,3,4) :");
                scanf("%d",&cord);
                switch(cord)
                {
                case 1:
                        {
                                create(L);
                                outlin(L);
                        }break;
                case 2:
                        {
                                insert(L);
                                outlin(L);
                        }break;
                case 3:
                        {
                                deleter(L);
                                outlin(L);
                        }break;

                case 4:exit(0);
                }
        }while(cord<=4);
	
	return 0;
}

void create(LinkList &L){
	int n,i;
	Lnode *r,*p;
	L=(LinkList)malloc(sizeof(Lnode));
	L->next=NULL; 
	r=L;
    printf("\n 请输入表长n=");
    scanf("%d",&n);
	printf("\n 请输入表数据:\n");
    for(i=0;i<n;-++i){
    	p=(LinkList)malloc(sizeof(Lnode));
    	printf("data%d=",i+1);
    	scanf("%d",&p->data);
    	p->next=NULL;
    	r->next=p;
    	r=p;
	}    
    printf("\n表创建成功\n");system("pause"); 
}

void insert(LinkList &L){
	int i,j=0,data;
	Lnode *p,*s;
	p=L;
	printf("\n 请输入插入的位置 i:");
    scanf("%d",&i);
    printf("\n 插入的数据 data:"); 
    scanf("%d",&data);
    while(p&&j<i-1){
    	p=p->next;++j;
	}
	s=(LinkList)malloc(sizeof(Lnode));
	s->data=data;
	s->next=p->next;
	p->next=s;
	printf("\n插入成功\n");system("pause");     
}

void deleter(LinkList &L){
	int i,j=0,data;
	Lnode *p,*q;
	p=L; 
	printf("\n 请输入删除的位置 i:");
    scanf("%d",&i);
    while(p->next&&j<i-1){
    	p=p->next;
    	++j;
	}
	q=p->next;
	p->next=q->next;
	data=q->data;
	delete q;
    printf("\n删除成功\n");
	printf("\n删除的数据为%d上的数据:%d\n",i,data);system("pause"); 
}

void outlin(LinkList &L)
{
        system("cls");
        int i=1;
        Lnode *p;
        p=L;
        printf("表信息:\n"); 
        printf("位置  元素值	物理地址"); 
     while(p->next){
     	p=p->next;
	 	printf("\n%2d %6d %15d",i++,p->data,p);  		
	 }
        printf("\n-------------------------");
}

二、执行效果

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_44932745/article/details/126978120