概述
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode,*Linklist;
int InitList(Linklist &L)
{
L = new Lnode;
L ->next=NULL;
return 0;
}
//倒序存储
Linklist Create(Linklist &L)
{
//L= new Lnode;
//L->next=NULL;
InitList(L);
Linklist s;
int a,n;
printf("请输入要存储的元素个数:");
scanf("%d",&a);
int i=1;
printf("请输入元素:");
while(i<=a)
{
s=new Lnode;
scanf("%d",&n);
s->data=n;
s->next=L->next;
L->next=s;
i++;
}
return L;
}
//顺序存储
Linklist Create1(Linklist &L)
{
InitList(L);
Linklist r,p;
printf("请输入数据(按空格继续输入按回车结束输入!):");
r=L;
int n=0;
char i;
do
{
p=new Lnode;
scanf("%d",&p->data);
p->next=NULL;
r->next=p;
r=p;
n++;
}
while((i=getchar())!='n');
return L;
}
//插入函数
Linklist ListInsert(int i ,Linklist &L,int num)
{
int
flag=1;
while(flag)
{
Linklist p,s;
p=L;
printf("请输入新元素要插入的位置:");
scanf("%d",&i);
int j=0;
while(p&&(j<i-1))//找到第i-1个元素
{
p=p->next;
j++;
}
s = new Lnode;
printf("请输入新元素:");
scanf("%d",&num);
s->data = num;
s->next = p->next;
p->next = s;
printf("是否继续插入新元素?1(是)/0(否)n");
scanf("%d",&flag);
}return L;
}
//单链表的删除
Linklist ListDelete(int i,Linklist &L)
{
Linklist p,q;
int j=0;
p=L;
printf("请输入要删除的元素位置:");
scanf("%d",&i);
while(p&&j<i-1)
{
p=p->next;
j++;
}
q = p->next;
p->next = q->next;
delete q;
}
//单链表的按值查找
Linklist ListSearch(int i,Linklist &L)
{
Linklist p;
p=L;
int j=0;
printf("请输入需要查找的值:");
scanf("%d",&i);
while(p->data!=i)
{
p=p->next;
j++;
}
printf("查找的值是第%d位:%dn",j,i);
return L;
}
void menu()
{
printf("tttt----------------欢迎来到单链表信息存储系统-------------------n");
printf("tttt----------------1.顺序存储创建单链表-------------------------n");
printf("tttt----------------2.倒序存储创建单链表-------------------------n");
printf("tttt----------------3.插入新元素---------------------------------n");
printf("tttt----------------4.删除元素-----------------------------------n");
printf("tttt----------------5.按值查找元素-------------------------------n");
printf("tttt----------------6.输出单链表的所有元素值---------------------n");
printf("tttt----------------7.在此显示功能菜单---------------------------n");
printf("tttt----------------8.退出---------------------------------------n");
}
void printLinkList(Linklist LL)
{
Lnode* s=LL->next;
int i=1;
printf("单链表存储的所有元素:");
do
{
printf("%d ",s->data);
s=s->next;
i++;
}while(s);
printf("nnn");
}
int main()
{
Linklist L;
int i,num;
int choice;
menu();
while(1)
{
printf("请选择功能序号:");
scanf("%d",&choice);
if(choice==8)
break;
switch(choice)
{
case 1:
Create1(L);
break;
case 2:
Create(L);
break;
case 3:
ListInsert(i,L,num);
break;
case 4:
ListDelete(i,L);
break;
case 5:
ListSearch(i,L);
break;
case 6:
printLinkList(L);
break;
case 7:
menu();
break;
default: printf("输入有误!!!!n");
}
}
return 0;
}
以上的代码是数据结构中C语言单链表的基本操作,拿来练练手的难免有些逻辑上的错误,有很多地方没有考虑周到,仅供大家参考!!
最后
以上就是传统飞机为你收集整理的C语言数据结构单链表基本操作的全部内容,希望文章能够帮你解决C语言数据结构单链表基本操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复