《线性表的插入和删除算法实现》以及《栈和队列的插入和删除算法实现》的c语言代码
展开全部
链表
#include"stdio.h"
#include"malloc.h"
typedef struct node
{
int data;
struct node *next;
}node,*linklist;
int initlist(linklist l)
{
linklist q,p;
int i,n;
q=l;
printf("请输入链表长度:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(linklist )malloc(sizeof(node));
printf("请输入链表数字:");
scanf("%d",&p->data);
q->next=p;
q=p;
}
q->next=NULL;
return 1;
}
int printflink(linklist l)
{
linklist p;
p=l->next;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
return 1;
}
int insertlink(linklist l)
{
linklist p,s;
int j=0,i,n;
p=l;
printf("请输入你要插入的位置:");
scanf("%d",&i);
printf("请输入插入的数字:");
scanf("%d",&n);
while(p->next!=NULL&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
{
printf("error\n");
return 1;
}
s=(linklist)malloc(sizeof(node));
s->data=n;
s->next=p->next;
p->next=s;
return 1;
}
int deletelink(linklist l)
{
linklist p,q;
int j=0,e,i;
p=l;
printf("请输入你要删除的位置:");
scanf("%d",&i);
while(p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
{
printf("error\n");
return 1;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
int main()
{
linklist l;
l=(linklist)malloc(sizeof(node));
l->next=NULL;
initlist(l);
printflink(l);
insertlink(l);
printflink(l);
deletelink(l);
printflink(l);
return 1;
}
栈
#include"iostream.h"
#include"stdio.h"
#include"malloc.h"
typedef int elementype;
#define MAXSTACK 100
typedef struct stack
{
elementype *base;
elementype *top;
int stacksize;
}stack;
//建栈
int initstack(stack *p)
{
p->base=(elementype *)malloc(MAXSTACK*sizeof(elementype));
if(!p->base)
{
cout<<"建立栈失败!"<<endl;
return 1;
}
p->top=p->base;
return 1;
}
//元素进栈
int pushstack(stack *p)
{
elementype e;
if(p->top-p->base>=p->stacksize)
{
cout<<"栈已满!"<<endl;
return 1;
}
cout<<"请输入进栈元素:";
cin>>e;
*p->top=e;
p->top++;
return 1;
}
//删除栈顶元素
int deletetop(stack *p)
{
if(p->top==p->base)
{
cout<<"栈为空"<<endl;
return 1;
}
p->top--;
return 1;
}
//显示栈中元素
int displaystack(stack *p)
{
int i=0;
elementype *s;
if(p->top==p->base)
{
cout<<"栈为空!"<<endl;
return 1;
}
s=p->base;
for(i=0;i<p->top-p->base;i++)
{
cout<<*s<<" ";
s++;
}
cout<<endl;
return 1;
}
int main()
{
stack *p;
int a;
initstack(p);
displaystack(p);
pushstack(p);
displaystack(p);
deletetop(p);
displaystack(p);
}
队列
#include"stdio.h"
#include"malloc.h"
typedef struct lnode
{
int data;
struct lnode *next;
}lnode;
typedef struct linkque
{
lnode *front;
lnode *rear;
}linkque;
int queinit(linkque *q)
{
int e;
lnode *p;
q->front=(lnode *)malloc(sizeof(lnode));
q->rear=q->front;
q->front->next=NULL;
while(1)
{
printf("请输入队列数字(输入0结束):");
scanf("%d",&e);
if(e==0) break;
p=(lnode *)malloc(sizeof(lnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
return 1;
}
int quein(linkque *q)
{
lnode *p;
int e;
printf("请输入你要插入队列的数字:");
scanf("%d",&e);
p=(lnode *)malloc(sizeof(lnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
return 1;
}
int quedel(linkque *q)
{
lnode *p;
int e;
p=q->front->next;
e=p->data;
q->front->next=p->next;
free(p);
return e;
}
int printfque(linkque *q)
{
lnode *p;
p=q->front->next;
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
linkque q;
queinit(&q);
printfque(&q);
quein(&q);
printfque(&q);
quedel(&q);
printf("队列出列后为:\n");
printfque(&q);
return 1;
}
#include"stdio.h"
#include"malloc.h"
typedef struct node
{
int data;
struct node *next;
}node,*linklist;
int initlist(linklist l)
{
linklist q,p;
int i,n;
q=l;
printf("请输入链表长度:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(linklist )malloc(sizeof(node));
printf("请输入链表数字:");
scanf("%d",&p->data);
q->next=p;
q=p;
}
q->next=NULL;
return 1;
}
int printflink(linklist l)
{
linklist p;
p=l->next;
while(p!=NULL)
{
printf("%d\n",p->data);
p=p->next;
}
return 1;
}
int insertlink(linklist l)
{
linklist p,s;
int j=0,i,n;
p=l;
printf("请输入你要插入的位置:");
scanf("%d",&i);
printf("请输入插入的数字:");
scanf("%d",&n);
while(p->next!=NULL&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
{
printf("error\n");
return 1;
}
s=(linklist)malloc(sizeof(node));
s->data=n;
s->next=p->next;
p->next=s;
return 1;
}
int deletelink(linklist l)
{
linklist p,q;
int j=0,e,i;
p=l;
printf("请输入你要删除的位置:");
scanf("%d",&i);
while(p->next!=NULL&&j<i-1)
{
p=p->next;
j++;
}
if(!(p->next)||j>i-1)
{
printf("error\n");
return 1;
}
q=p->next;
p->next=q->next;
free(q);
return 1;
}
int main()
{
linklist l;
l=(linklist)malloc(sizeof(node));
l->next=NULL;
initlist(l);
printflink(l);
insertlink(l);
printflink(l);
deletelink(l);
printflink(l);
return 1;
}
栈
#include"iostream.h"
#include"stdio.h"
#include"malloc.h"
typedef int elementype;
#define MAXSTACK 100
typedef struct stack
{
elementype *base;
elementype *top;
int stacksize;
}stack;
//建栈
int initstack(stack *p)
{
p->base=(elementype *)malloc(MAXSTACK*sizeof(elementype));
if(!p->base)
{
cout<<"建立栈失败!"<<endl;
return 1;
}
p->top=p->base;
return 1;
}
//元素进栈
int pushstack(stack *p)
{
elementype e;
if(p->top-p->base>=p->stacksize)
{
cout<<"栈已满!"<<endl;
return 1;
}
cout<<"请输入进栈元素:";
cin>>e;
*p->top=e;
p->top++;
return 1;
}
//删除栈顶元素
int deletetop(stack *p)
{
if(p->top==p->base)
{
cout<<"栈为空"<<endl;
return 1;
}
p->top--;
return 1;
}
//显示栈中元素
int displaystack(stack *p)
{
int i=0;
elementype *s;
if(p->top==p->base)
{
cout<<"栈为空!"<<endl;
return 1;
}
s=p->base;
for(i=0;i<p->top-p->base;i++)
{
cout<<*s<<" ";
s++;
}
cout<<endl;
return 1;
}
int main()
{
stack *p;
int a;
initstack(p);
displaystack(p);
pushstack(p);
displaystack(p);
deletetop(p);
displaystack(p);
}
队列
#include"stdio.h"
#include"malloc.h"
typedef struct lnode
{
int data;
struct lnode *next;
}lnode;
typedef struct linkque
{
lnode *front;
lnode *rear;
}linkque;
int queinit(linkque *q)
{
int e;
lnode *p;
q->front=(lnode *)malloc(sizeof(lnode));
q->rear=q->front;
q->front->next=NULL;
while(1)
{
printf("请输入队列数字(输入0结束):");
scanf("%d",&e);
if(e==0) break;
p=(lnode *)malloc(sizeof(lnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
return 1;
}
int quein(linkque *q)
{
lnode *p;
int e;
printf("请输入你要插入队列的数字:");
scanf("%d",&e);
p=(lnode *)malloc(sizeof(lnode));
p->data=e;
p->next=NULL;
q->rear->next=p;
q->rear=p;
return 1;
}
int quedel(linkque *q)
{
lnode *p;
int e;
p=q->front->next;
e=p->data;
q->front->next=p->next;
free(p);
return e;
}
int printfque(linkque *q)
{
lnode *p;
p=q->front->next;
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
printf("\n");
}
int main()
{
linkque q;
queinit(&q);
printfque(&q);
quein(&q);
printfque(&q);
quedel(&q);
printf("队列出列后为:\n");
printfque(&q);
return 1;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询