# include<stdio.h>
# include<stdlib.h>
typedef struct nood
{
int data;
struct nood *next;
} link_list;
link_list *creat_head()
{
int x;
link_list *head,*p,*r;
p=(link_list *)malloc(sizeof(link_list));
p->next=NULL;
head=p;
r=p;
printf(" 请输入,0表结束:\n");
scanf("%d",&x);
while(x!=0)
{
p=(link_list *)malloc(sizeof(link_list));
p->data=x;
p->next=NULL;
r->next=p;
r=r->next;
scanf("%d",&x);
}
return (head);
}
int delat_list(link_list *head3,int x)
{
link_list *p,*s;
int i=0;
p=head3;
if(p->next==NULL)
{
printf("链表为空\n");
return 0;
}
while((p->next!=NULL)&&(i<x-1))
{
i++;
p=p->next;
}
if(p->next==NULL||(i>=x))
{
printf("不存在该节点\n");
return 0;
}
else
{
s=p->next;
p->next=s->next;
free(s);
}
}
void Clear_List(link_list *head3)
{
head3->next=NULL;
}
int GetListLen(link_list *head3)
{
int x=0;
link_list *p,*s;
p=head3;
while(p->next!=NULL)
{
p=p->next;
x++;
}
return x;
}
int show_list(link_list *head3)
{
link_list *p;
p=head3->next;
if(EmptyList(p))
{
printf(" 该链表为空\n");
return 0;
}
while(p!=NULL)
{
printf("%4d",p->data);
p=p->next;
}
printf("\n");
return 1;
}
int EmptyList(link_list *head1)
{
link_list *p;
p=head1;
if(p->next==NULL)
return 1;
else return 0;
}
int ChangeList(link_list *head1,int x,int y)
{
link_list *p;
int a=0;
p=head1;
if(EmptyList(p))
{
printf("链表为空:\n");
return 0;
}
if(x>GetListLen(head1))
{
printf("位置超出了最大\n");
return 0;
}
while(a<x-1)
{
p=p->next;
a++;
}
p->next->data=y;
return 1;
}
int InsertList(link_list *head1,int x,int y)
{
link_list *p,*s,*q;
p=head1;
int i=0;
if(EmptyList(p))
{
printf("链表为空:\n");
return 0;
}
if(x>GetListLen(head1))
{
printf("位置超出了最大\n");
return 0;
}
s=(link_list *)malloc(sizeof(link_list));
if(s==NULL)
{
printf("开辟空间失败\n");
return 0;
}
s->data=y;
s->next=NULL;
while(i<x-1)
{
p=p->next;
i++;
}
q=p->next;
p->next=s;
s->next=q;
return 0;
}
int SearchList(link_list *head1,int x)
{
link_list *p,*s;
p=head1;
int i=0;
if(EmptyList(p))
{
printf(" 链表为空:\n");
return 0;
}
while((p->data!=x)&&(p->next!=NULL))
{
p=p->next;
i++;
}
printf("i==%d\n",i);
if((p->next==NULL))
{
printf(" 链表不存在数值--%c\n",x);
return 0;
}
printf(" %d--存在,位置在--%d\n",x,i);
return 1;
}
int Invert(link_list *head1)
{
link_list *p,*s,*r;
p=head1->next;
s=(link_list *)malloc(sizeof(link_list));
s=NULL;
r=s;
while(p!=NULL)
{
s=(link_list *)malloc(sizeof(link_list));
s->data=p->data;
s->next=r;
r=s;
p=p->next;
}
head1->next=r;
}
int main()
{
printf("\n");
printf("************链表功能表************\n");
printf("\n");
printf("************功能对应数字************\n");
printf("\n");
printf("************删除--------1************\n");
printf("\n");
printf("************倒置--------2************\n");
printf("\n");
printf("************插入--------3************\n");
printf("\n");
printf("********得到长度--------4************\n");
printf("\n");
printf("************查找--------5************\n");
printf("\n");
printf("********退出功能--------6************\n");
printf("\n");
int x;
int i,j,a,b,flag=1;
link_list *head1;
head1=creat_head();
printf("\n");
printf("输入初始化链表的数值:\n");
show_list(head1);
printf("\n");
printf("对照上面功能表选数字:\n");
while(flag)
{
scanf("%d",&j);
switch(j)
{
case 1: printf("\n");
printf("输入要删除的位置:\n");
scanf("%4d",&i);
printf("输入删除后链表的数值:\n");
printf(" 删除位置为----%d:\n",i);
delat_list(head1,i);
show_list(head1);
printf("对照上面功能表选数字:\n");
break;
case 2: printf("\n");
printf("倒置链表后的链表为:\n");
Invert(head1);
show_list(head1);
printf("\n");
printf("对照上面功能表选数字:\n");
break;
case 3: printf("\n");
printf("输入需要插入链表的位置以及数值:\n");
scanf("%d%d",&a,&b);
printf("输入插入链表后链表的数值:\n");
printf(" 插入位置为--%d,插入数值为--%d:\n",a,b);
InsertList(head1,a,b);
show_list(head1);
printf("\n");
printf("对照上面功能表选数字:\n");
break;
case 4: printf("\n");
x=GetListLen(head1);
printf("此链表的长度为:%d\n",x);
printf("\n");
printf("对照上面功能表选数字:\n");
break;
case 5: printf("\n");
printf("请输入要查找的数:");
scanf("%d",&i);printf("查找 %d 的位置:\n",i);
SearchList(head1,i);
printf("\n");
printf("对照上面功能表选数字:\n");
break;
case 6: printf("\n");
flag=0;
printf("功能跳出\n");
break;
default: printf("无效的选择\n");
}
}
return 0;
}
# include<stdio.h>
# include<stdlib.h>
# define max_size 100
# define true 1
# define fault 0
typedef struct node
{
int max[max_size];
int top_number;
} sqstack;
int emplty(sqstack *s)
{
if(s->top_number<0)
return true;
else return fault;
}
int push( int x,sqstack *s)
{
if(s->top_number>max_size-1)
{
printf("盏已满:\n");
return fault;
}
else
{
s->max[(s->top_number)++]=x;
return true;
}
}
int get( int y,sqstack *s)
{
if(s->top_number<0)
{
printf("the sqstack is empty\n");
return fault;
}
s->top_number--;
return(s->max[s->top_number+1]);
}
int getstop(sqstack *s)
{
if(s->top_number<0)
{
printf("the sqstack is empty\n");
return fault;
}
return(s->max[s->top_number]);
}
void show_sqstack(sqstack *s)
{
int i;
printf("the sqstack number is;\n");
for(i=s->top_number;s>0;s--)
printf("%4d",s->max[i]);
}
int main()
{
int x,i;
sqstack *b;
b->top_number=0;
printf("请输入你要输入的数据:\n");
scanf("%d",&x);
for(i=0;i<x;i++)
{
push( i, b);
}
show_sqstack(b);
return 0;
}