c语言栈队列链表算法代码实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<>
#define null 0
#define len sizeof(struct lnode)
int n;
struct lnode *creatlist();
struct lnode *listinsert();
struct lnode *listdel();
struct lnode{
int a;
struct lnode *next;
};
struct lnode *head;
void main()
{
int n;
do{
printf("=====链式表练习=====\n");
printf(" 请选择操作:\n");
printf(" 1、建立链式表\n");
printf(" 2、插入新元素\n");
printf(" 3、删除元素\n");
printf("====================\n");
scanf("%d",&n);
switch(n)
{
case 1:creatlist();break;
case 2:listinsert();break;
case 3:listdel();break;
default:printf("选择错误,请确认输入!\n");break;
}
}while(1);
}
struct lnode *creatlist()//建立链表
{
struct lnode *p1,*p2,*p0;
n=0;
head=null;
p1=(struct lnode *)malloc(len);
printf("请输入初始元素:\n");
scanf("%d",&p1->a);
p1->next=null;
while(p1->a!=0)
{
++n;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
p1=(struct lnode *)malloc(len);
scanf("%d",&p1->a);
p1->next=null;
}
free(p1);
printf("建立链表成功!\n");
printf("建立的链表为:\n");
p0=head;
do
{
printf("%d ",p0->a);
p0=p0->next;
}while(p0!=null);
printf("\n");
free(p0);
return(head);
}
struct lnode *listinsert()//插入链表元素{
int i,j=1;
s truct lnode *p,*q,*p0;
p=p0=head;
q=(struct lnode *)malloc(len);
p rintf("请选择插入的位置:\n");
scanf("%d",&i);
p rintf("请输入要插入元素的值:\n");
s canf("%d",&q->a);
w hile(j { p=p->next; j++; } q->next=p->next; p->next=q; free(p); printf("插入成功!\n"); printf("插入后链表为:\n"); /*do { printf("%d ",p0->a); p0=p0->next; }while(p0!=null); printf("\n"); free(p0);*/ return(head); } struct lnode *listdel()//删除链表元素{ int j; struct lnode *p,*q,*p0; p=q=p0=head; printf("请输入要删除的元素:\n"); scanf("%d",&j); while(p->a!=j) { q=p; p=p->next; } q->next=p->next; free(p); printf("删除成功!\n"); printf("删除后链表为:\n"); do { printf("%d ",p0->a); p0=p0->next; } while(p0!=null); printf("\n"); free(q); free(p0); return(head); } #include<> #define null 0; struct qnode{ int data; struct qnode *next; }; struct linkqueue{ struct qnode *front; struct qnode *rear; }q; struct linknode *qinit();