程序.docx
- 文档编号:27464772
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:24
- 大小:17.64KB
程序.docx
《程序.docx》由会员分享,可在线阅读,更多相关《程序.docx(24页珍藏版)》请在冰豆网上搜索。
程序
1.插入
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
DataTypex;
inti;
LinkListCreateListR1(void);
LinkListGetNode(LinkListhead,inti);
voidInsertList(LinkListhead,DataTypex,inti);
voidPrintList(LinkListhead);
head=CreateListR1();//建立单链表
PrintList(head);//打印单链表
printf("请输入欲插入的元素:
");
scanf("%c",&x);
printf("请输入欲插入元素的位置:
");
scanf("%d",&i);
InsertList(head,x,i);
PrintList(head);//打印单链表
}
//单链表的建立:
LinkListCreateListR1(void)
{charch;
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
ListNode*s,*r;
r=head;//尾指针初值指向头结点
while((ch=getchar())!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head->next;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
//单链表的查找
LinkListGetNode(LinkListhead,inti)
{//在带头结点的单链表head中查找第i个结点
intj;
ListNode*p;
p=head;j=0;//从头结点开始扫描
while(p->next&&j
{p=p->next;
j++;
}
if(i==j)
returnp;//找到了第i个结点
else
returnNULL;//找不到满足条件的结点
}
//单链表的插入
voidInsertList(LinkListhead,DataTypex,inti)
{//将值为x的新结点插入到带头结点的单链表head的第i个结点的位置上
ListNode*p,*s;
p=GetNode(head,i-1);//寻找第i-1个结点
if(p==NULL)
{
printf("插入位置非法\n");
exit(0);
}
s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=x;
s->next=p->next;
p->next=s;
}
2.建立1
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
LinkListCreateListF(void);
voidPrintList(LinkListhead);
head=CreateListF();//建立单链表
PrintList(head);//打印单链表
}
//单链表的建立:
LinkListCreateListF(void)
{charch;
LinkListhead;//头指针
ListNode*s;//工作指针
head=NULL;//链表开始为空
ch=getchar();
while(ch!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
s->next=head;
head=s;
ch=getchar();
}
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
3.建立2
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
LinkListCreateListR(void);
voidPrintList(LinkListhead);
head=CreateListR();//建立单链表
PrintList(head);//打印单链表
}
//单链表的建立:
LinkListCreateListR(void)
{charch;
LinkListhead;//头指针
ListNode*s,*r;//工作指针
head=NULL;//链表开始为空
r=NULL;//链表尾指针开始为空
while((ch=getchar())!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
if(head==NULL)
head=s;//新结点插入空表
elser->next=s;
r=s;
}
if(r!
=NULL)
r->next=NULL;//对于非空表,将尾结点指针域置空
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
4.建立3
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
LinkListCreateListR1(void);
voidPrintList(LinkListhead);
head=CreateListR1();//建立单链表
PrintList(head);//打印单链表
}
//单链表的建立:
LinkListCreateListR1(void)
{charch;
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
ListNode*s,*r;
r=head;//尾指针初值指向头结点
while((ch=getchar())!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head->next;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
5.单链表查找1
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
ListNode*p;
inti;
LinkListCreateListR1(void);
LinkListGetNode(LinkListhead,inti);
voidPrintList(LinkListhead);
head=CreateListR1();//建立单链表
PrintList(head);//打印单链表
printf("请输入欲查找结点的序号:
");
scanf("%d",&i);
p=GetNode(head,i);
if(p==NULL)
printf("未找到\n");
else
printf("找到第%d结点的值是%c\n",i,p->data);
}
//单链表的建立:
LinkListCreateListR1(void)
{charch;
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
ListNode*s,*r;
r=head;//尾指针初值指向头结点
while((ch=getchar())!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head->next;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
//单链表的查找
LinkListGetNode(LinkListhead,inti)
{//在带头结点的单链表head中查找第i个结点
intj;
ListNode*p;
p=head;j=0;//从头结点开始扫描
while(p->next&&j
{p=p->next;
j++;
}
if(i==j)
returnp;//找到了第i个结点
else
returnNULL;//找不到满足条件的结点
}
6.查找2
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
ListNode*p;
DataTypekey;
LinkListCreateListR1(void);
LinkListLocateNode(LinkListhead,DataTypekey);
voidPrintList(LinkListhead);
head=CreateListR1();//建立单链表
PrintList(head);//打印单链表
printf("请输入欲查找的元素:
");
scanf("%c",&key);
p=LocateNode(head,key);
if(p==NULL)
printf("未找到\n");
else
printf("找到了\n");
}
//单链表的建立:
LinkListCreateListR1(void)
{charch;
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
ListNode*s,*r;
r=head;//尾指针初值指向头结点
while((ch=getchar())!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head->next;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
//单链表的查找
LinkListLocateNode(LinkListhead,DataTypekey)
{//在带头结点的单链表head中查找其值为key的结点
ListNode*p=head->next;//从开始结点比较
while(p&&p->data!
=key)//直到p为NULL或p->data是key为止
p=p->next;//扫描下一结点
returnp;
}
7.删除
#include
#include
//单链表的定义:
typedefcharDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstructnode//结点类型定义
{DataTypedata;//结点的数据域
structnode*next;//结点的指针域
}ListNode;
typedefListNode*LinkList;
voidmain()
{
LinkListhead;
inti;
LinkListCreateListR1(void);
LinkListGetNode(LinkListhead,inti);
voidDeleteList(LinkListhead,inti);
voidPrintList(LinkListhead);
head=CreateListR1();//建立单链表
PrintList(head);//打印单链表
printf("请输入欲删除结点的位置:
");
scanf("%d",&i);
DeleteList(head,i);
PrintList(head);//打印单链表
}
//单链表的建立:
LinkListCreateListR1(void)
{charch;
LinkListhead=(ListNode*)malloc(sizeof(ListNode));
ListNode*s,*r;
r=head;//尾指针初值指向头结点
while((ch=getchar())!
='\n')
{s=(ListNode*)malloc(sizeof(ListNode));//生成新结点
s->data=ch;
r->next=s;
r=s;
}
r->next=NULL;
returnhead;//返回头指针
}
//单链表的打印:
voidPrintList(LinkListhead)
{
ListNode*p;
for(p=head->next;p;p=p->next)
printf("%c",p->data);
printf("\n");
}
//单链表的查找
LinkListGetNode(LinkListhead,inti)
{//在带头结点的单链表head中查找第i个结点
intj;
ListNode*p;
p=head;j=0;//从头结点开始扫描
while(p->next&&j
{p=p->next;
j++;
}
if(i==j)
returnp;//找到了第i个结点
else
returnNULL;//找不到满足条件的结点
}
//单链表的删除
voidDeleteList(LinkListhead,inti)
{//删除带头结点的单链表中的第i个结点
ListNode*p,*r;
p=GetNode(head,i-1);//寻找第i-1个结点
if(p==NULL||p->next==NULL)
{
printf("删除位置非法\n");
exit(0);
}
r=p->next;
p->next=r->next;
free(r);//释放第i个结点
}
1.顺序表建立
#include
//顺序表的定义:
#defineListSize100//表空间大小可根据实际需要而定,这里假设为100
typedefintDataType;//DataType可以是任何相应的数据类型如int,float或char
typedefstruct
{DataTypedata[ListSize];//向量data用于存放表结点
intlength;//当前的表长度
}SeqList;
voidmain()
{
SeqListL;
intn=10;//欲建立的顺序表长度
L.length=0;
voidCreateList(SeqList*L,intn);
voidPrintList(SeqListL,intn);
CreateList(&L,n);//建立顺序表
PrintList(L,n);//打印顺序表
}
//顺序表的建立:
voidCreateList(SeqList*L,intn)
{inti;
for(i=0;i scanf("%d",&(*L).data[i]); (*L).length=n; } //顺序表的打印: voidPrintList(SeqListL,intn) {inti; for(i=0;i printf("%d",L.data[i]); printf("\n"); } 2.查找 #include #include /*顺序表的定义: */ #defineListSize100/*表空间大小可根据实际需要而定,这里假设为100*/ typedefintDataType;/*DataType可以是任何相应的数据类型如int,float或char*/ typedefstruct {DataTypedata[ListSize];/*向量data用于存放表结点*/ intlength;/*当前的表长度*/ }SeqList; /*顺序表的查找: */ intLocateList(SeqListL,DataTypex) {inti=0; while(i =x) ++i; if(i elsereturn0; } /*顺序表的打印: */ voidPrintList(SeqListL,intn) {inti; for(i=0;i printf("%d",L.data[i]); printf("\n"); } main() { SeqListL; inti,n=10,x; for(i=0;i L.data[i]=rand()%100; L.length=n; PrintL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序