c语言栈队列链表算法代码实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

相关文档
最新文档