当前位置:网站首页>2021-04-12 链表第一次实现!!!
2021-04-12 链表第一次实现!!!
2022-06-23 09:41:00 【Mr. Rabbit.】
#include<stdio.h>
#include<stdlib.h>
typedef int DataType;
typedef struct Node
{
DataType Data;
struct Node*Next;
}Node;
typedef struct Node *LinkList;
int InitList(LinkList *L) //带有头节点的单链表的初始化
{
(*L) = (LinkList)malloc(sizeof(Node));
if (!L)
{
printf("分配内存失败!\n");
exit(0);
}
(*L)->Next = NULL;
return 0;
}
int ListEmpty(LinkList H)//就是看头结点的指针域是否为空;
{
return H->Next==NULL;
}
void CreatFormHead(LinkList H)//逆序;
{
DataType data;//建立一个data型的数据类型;
Node*s;//需要插入的结点指针;
scanf("%d",&data);//给数据域赋值;
while(data!=-1)
{
s=(Node*)malloc(sizeof(Node));//给插入的节点分配空间;
s->Data=data;//给结点的数据域赋值;
s->Next=H->Next;
H->Next=s;//头插法的最重要两步骤;
scanf("%d",&data);//继续赋值;
}
}
void CreatFormTail(LinkList H)//顺序;
{
Node*tail;
tail=H;
DataType data;//建立一个data型的数据类型;
Node*s;//需要插入的结点指针;
scanf("%d",&data);//给数据域赋值;
while(data!=-1)
{
s=(Node*)malloc(sizeof(Node));//给插入的节点分配空间;
s->Data=data;//给结点的数据域赋值;
s->Next=tail->Next;
tail->Next=s;//头插法的最重要两步骤;
tail=s;//tail始终指向尾部;
scanf("%d",&data);//继续赋值;
}
}
Node*Get(LinkList H,int i)
{
Node*p;//结点指针;
int j=0;
p=H;
if(ListEmpty(H))//空表;
{
printf("表为空!/n");
return 0;
}
while(!ListEmpty&&j<i)
{
p=p->Next;
j++;
}
if(j==0)
return p;
return NULL;
}
int Locate(LinkList H,DataType data)//按值查找;
{
Node*p=H->Next;
int i=1;
while(p)
{
while(p->Data!=data)
{
p=p->Next;
i++;
}
break;
}
return i;
}
int length(LinkList H)//求表长;
{
Node*p;
p=H;
int len=0;
while(p->Next!=NULL)
{
len++;
p=p->Next;
}
return len;
}
void InsList(LinkList H,int i,DataType data)//插入操作;
{
Node*p;
Node*s;
p=H;
int j=0;
while(p->Next!=NULL&&j<i-1)
{
p=p->Next;
j++;
}
if(p==NULL)
{
return;
}
s=(Node*)malloc(sizeof(Node));
s->Data=data;
s->Next=p->Next;
p->Next=s;
}
int DelList(LinkList H,int i,DataType*data)//删除操作;
{
Node*p;
Node*s;
p=H;
int k=0;
while(i<0||i>length(H))
{
printf("删除位置不合法!");
return 0;
}
if(p->Next!=NULL&&k<i-1)
{
p=p->Next;
k++;
}
s=p->Next;
*data=s->Data;
p->Next=s->Next;
free(s);
return *data;
}
void DestoryList(LinkList H)//销毁链表;
{
Node*p;
Node*q;
p=H;
while(p->Next!=NULL)
{
q=p;
p=p->Next;
free(q);
}
}
void PrintList(LinkList H)
{
Node*p;
p=H->Next;
while(p)
{
printf("%d",p->Data);
p=p->Next;
}
printf("\n");
}
int main()
{
LinkList(L);
LinkList(L1);
DataType data;
int num;//需要操作的元素序号
int val;//插入元素值
InitList(&L);
InitList(&L1);
printf("头插法建表(L1):\n");
CreatFormHead(L1);
printf("链表中的元素有:\n");
PrintList(L1);
printf("\n");
printf("尾插法建表(L):");
CreatFormTail(L);
printf("链表中的元素有:\n");//后面为对尾插法所建表的操作
PrintList(L);
printf("\n");
printf("在链表中插入一个元素:\n");
printf("请输入插入位置:");
scanf("%d",&num);
printf("请输入插入元素值:");
scanf("%d",&val);
InsList(L,num,val);
printf("链表中的元素有:\n");
PrintList(L);
printf("\n");
printf("删除链表中的元素:\n");
printf("请输入删除位置:");
scanf("%d",&num);
DelList(L,num,&data);
printf("删除元素的值为%d\n",data);
printf("\n");
printf("链表中的元素有:\n");
PrintList(L);
printf("\n");
printf("链表的长度为:%d\n",length(L));
printf("\n");
printf("请输入要查找的元素序号:\n");
scanf("%d",&num);
Node*p=Get(L,num);
printf("第%d个元素值为:%d\n",num,p->Data);
printf("请输入要查找的元素值:\n");
scanf("%d",&val);
printf("%d在表中的位置序号为:%d\n",val,Locate(L,val));
printf("\n");
system("pause");
return 0;
}
参考曹记东老师
```c
在这里插入代码片
边栏推荐
- Playing with nanopi 2 bare metal tutorial programming-01 lighting user led difficulty analysis
- Form repeated submission problem
- Qiming Xingchen Huadian big data quantum security innovation laboratory was unveiled and two black technology products were released
- 【CTF】bjdctf_2020_babyrop
- Subscript operator of map
- Jump game of leetcode topic analysis
- Gstore weekly gstore source code analysis (IV): black and white list configuration analysis of security mechanism
- 薄膜干涉数据处理
- Three implementation methods of distributed lock
- [極客大挑戰 2019]HardSQL
猜你喜欢

Fill the pit for repvgg? In fact, it is the repoptimizer open source of repvgg2

Three implementation methods of distributed lock

JSP getting started summary

web--信息泄漏

ThinkPHP 2. X/3.0 vulnerability recurrence
![[wangdingbei 2020 Qinglong formation]areuserialz](/img/38/b67f7a42abec1cdaad02f2b7df6546.png)
[wangdingbei 2020 Qinglong formation]areuserialz

Cesium加载正射影像方案

J. Med. Chem. | Release: a new drug design model for deep learning based on target structure

Gstore weekly gstore source code analysis (IV): black and white list configuration analysis of security mechanism

Use Base64 to show pictures
随机推荐
Learn SCI thesis drawing skills (f)
Difference between global shutter and roller shutter
快速排序的简单理解
Wechat applet: click the button to switch frequently, overlap the custom markers, but the value does not change
Navagation navigation
高性能算力中心 — InfiniBand — Overview
[plugin:vite:import-analysis]Failed to resolve import “@/“ from ““.Does the file exist
Sun Tower Technology recruits PostgreSQL Database Engineer
AI system frontier dynamics issue 38: Google has abandoned tensorflow?; Four GPU parallel strategies for training large models; Father of llvm: modular design determines AI future
Cesium loading orthophoto scheme
UEFI learning 3.6 - ACPI table on ARM QEMU
Gstore weekly gstore source code analysis (IV): black and white list configuration analysis of security mechanism
Install the typescript environment and enable vscode to automatically monitor the compiled TS file as a JS file
mysql中innodb下的redo log什么时候开始执行check point落盘的?
Bit binding
Go 单元测试
ThinkPHP 2.x/3.0 漏洞复现
web--信息泄漏
16. system startup process
AI: the Elephant in Room