//该程序完成'动态内存分配'
//该程序完成'动态内存分配'
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}linklist;
//主菜单
int menu()
{
printf("\n*******************************************\n");
printf("\n1. 创建单链表\n");
printf("\n2. 向单链表中插入新结点\n");
printf("\n0. 退出系统\n");
printf("\n*******************************************\n");
}
//退出菜单
void menu_bye()
{
printf("\n*******************************************\n");
printf("\n 欢迎再次使用\n");
printf("\n 再见\n");
printf("\n*******************************************\n");
}
linklist *creat()
{
linklist *head,*p,*q;
head=(linklist*)malloc(sizeof(struct node));
head->next=NULL;
p=q=(linklist*)malloc(sizeof(struct node));
head->next=p;
p->next=NULL;
scanf("%d",&(p->data));
while(p->data!=-1)
{
q->next=p;
q=p;
p=(linklist*)malloc(sizeof(struct node));
scanf("%d",&(p->data));
}
q->next=NULL;
return head;
}
//输出链表的值
void print(linklist *head)
{
linklist *p;
p=head->next;
if(p==NULL)
{
printf("空链表!");
}
do
{
printf("%d->",p->data);
p=p->next;
}while(p!=NULL);
printf("\n");
}
linklist *h;
//主函数
int main()
{
menu();
int n;
while(1)
{
printf("请输入(0-7):");
scanf("%d",&n);
if (n<0 || n>7)
printf("没有此值,请重新输入!\n");
switch(n)
{
case 0:
system("cls");
menu_bye();
exit(0);
case 1:
printf("请输入一串整数,以空格分隔,以-1结束.\n");
h=creat();
print(h);
break;
case 2:
int number,pos;
printf("\n输入要插入的结点的值和位置:\n");
scanf("%d%d",&number,&pos);
// insertlinklist(h,number,pos)
print(h);
break;
}
}
return 1;
}
输出结果: