数据结构(四)

链表的c语言操作

链表

链表内容:

建立含有若干个元素的链表,并将结果在屏幕上输出。对刚建立的链表实现插入、删除、修改、查找,并将结果在屏幕上输出。

链表建立:


#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#define DataType char

typedef struct node

{

DataType data;

struct node *next;

}LNode,*LinkList;

 

//init

LinkList Init_LinkList()

{

LinkList head;

head=(LNode *)malloc (sizeof (LNode));

head->next=NULL;

return head;

}

//hcreate

LinkList HCreat_LinkList()

{

LinkList head=Init_LinkList();

LNode *p;

char x;

while((x=getchar())!='\n')

{

p=(LNode *)malloc(sizeof(LNode));

p->data=x;

p->next=head->next;

head->next=p;

}

return head;

}

//rcreate

LinkList RCreat_LinkList()

{

LinkList head=NULL;

LNode *p,*r=NULL;

char x;

p=(LNode *)malloc(sizeof(LNode));

head=p;

r=p;

p->next=NULL;

while(x=getchar()!='\n')

{

p=(LNode*)malloc(sizeof(LNode));

p->data=x;

r->next=p;

r=p;

}

if(r!=NULL)r->next=NULL;

return head;

}

//length

int Length_LinkList(LinkList head)

{

int i;

LNode *p;

p=head;

i=0;

while(p->next!=NULL)

{

p=p->next;

i++;

}

return i;

}

//get

LNode *Get_LinkList(LinkList L,int i)

{

LNode *p=L;

int j=0;

while(p->next!=NULL && j<i)

{

p=p->next;

j++;

}

if(j==i)

return p;

else

return NULL;

}

//locate

LNode *Locate_LinkList(LinkList L,DataType x)

{

LNode *p=L->next;

while(p!=NULL && p->data!=x)

p=p->next;

return p;

}

//empty

int Empty(LinkList head)

{

if(head->next==NULL)

return 1;

else

return 0;

}

//delete

int Del_LinkList(LinkList L,int i)

{

LNode *p,*q;

if(!Empty(L))

{

p=Get_LinkList(L,i-1);

if(p==NULL)

return -1;

else

if(p->next==NULL)

return 0;

else

{

q=p->next;

p->next=q->next;

free(q);

return 1;

}

}

}

//insert

int Insert_LinkList(LinkList L,int i,DataType x)

{

LNode *p,*s;

p=Get_LinkList(L,i-1);

if(p==NULL)

{

printf("参数错");

return 0;

}

else

{

s=(LNode *)malloc(sizeof(LNode));

s->data=x;

s->next=p->next;

p->next=s;

}

return 1;

}

void Print(LinkList head)

{

LNode *p;

p=head->next;

while(p)

{

printf("%c ",p->data);

p=p->next;

}

}

 

void main()

{

LinkList head;

LNode *p;

int i;

char x;

head=HCreat_LinkList();

Print(head);

scanf("%d",&i);

p=Get_LinkList(head,i);

printf("%c",p->data);

    scanf("%d%c",&i,&x);

    Insert_LinkList(head,i,x);

    Print(head);

    scanf("%d",&i);

    Del_LinkList(head,i);

    Print(head);

    printf("%d",Length_LinkList(head));

i=1;

while(!Empty(head))

    Del_LinkList(head,i);

if(Empty(head))

printf("已空");

}

    运行结果:

attachments-2021-04-Dy8Kn4OC6069cff1b5cae.png    

  • 发表于 2021-04-04 22:41
  • 阅读 ( 1099 )
  • 分类:默认分类

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不期而遇
不期而遇

8 篇文章

作家榜 »

  1. 阿九 20 文章
  2. q5320 14 文章
  3. 不期而遇 8 文章
  4. admin 7 文章
  5. 此心安處是吾鄉 4 文章
  6. 小白 4 文章
  7. Mr.Pang 3 文章
  8. yixinBC 3 文章