|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct node
- {
- int date;
- struct node *next;
- }node;
- node *creat_list(int n);
- int empty_list(node *head);
- int treval_list(node *head);
- int delete_list(node *head,int i,int n);
- int add_list(node *head,int i,int k,int n);
- int main()
- {
- node *phead = NULL;
- int n,j;
-
- printf("1:创建链表\n");
- printf("2:遍历链表\n");
- printf("3:删除节点\n");
- printf("4:插入节点\n");
- printf("5:退出程序\n");
- printf("请输入您想操作的编号:");
- while(1)
- {
- scanf("%d",&j);
- switch(j)
- {
- case 1:{
- printf("请输入您想创建的有效节点的个数:");
- scanf("%d",&n);
- phead = creat_list(n);
- break;
- }
- case 2:{
- if(empty_list(phead))
- {
- printf("链表为空,遍历失败,请选择您的下一步操作序号:\n");
- break;
- }
- else
- {
- treval_list(phead);
- break;
- }
-
- }
- case 3:{
- int i;
- if(empty_list(phead))
- {
- printf("链表为空,删除节点失败,请选择您的下一步操作序号:\n");
- break;
- }
- else
- {
- printf("您想删除第几个节点:");
- scanf("%d",&i);
- if(!delete_list(phead,i,n))
- {
- printf("删除节点失败,请选择您的下一步操作序号:\n");
- }
- break;
- }
-
- }
- case 4:{
- if(empty_list(phead))
- {
- printf("链表为空,插入节点失败,请选择您的下一步操作序号:\n");
- break;
- }
- else
- {
- int i,k;
- printf("请输入您想插入元素的位置:");
- scanf("%d",&i);
- printf("请输入您想插入的元素的值:");
- scanf("%d",&k);
- if(!add_list(phead,i,k,n))
- {
- printf("插入节点失败,请选择您的下一步操作序号:\n");
- }
- break;
- }
- }
- case 5:{
- exit(-1);
- }
- }
- printf("请输入您的下一步操作:");
- }
- return 0;
- }
- node *creat_list(int n)
- {
- int i,k;
- node *head = (node *)malloc(sizeof(node));
- node *phead = head;
- head->next = NULL;
- for(i=1;i<=n;i++)
- {
- head->next = (node *)malloc(sizeof(node));
- if(!head)
- {
- printf("创建链表失败,请关闭程序,重新打开");
- getchar();
- exit(-1);
- }
- scanf("%d",&k);
- head->next->date = k;
- head->next->next = NULL;
- head = head->next;
- }
- return(phead);
- }
- int empty_list(node *head)
- {
- if(head == NULL)
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
- int treval_list(node *head)
- {
- int i;
- for(i=1;head->next!=NULL;i++)
- {
- printf("%d\t",head->next->date);
- printf("\n");
- head = head->next;
- }
- return 1;
- }
- int delete_list(node *head,int i,int n)
- {
- if(i<0||i>n)
- {
- printf("输入节点位置有误\n");
- return 0;
- }
- else
- {
- node *p = NULL;
- int j;
- for(j=1;j<i;j++)
- {
- head = head->next;
- }
- printf("您删除的节点为:%d",head->next->date);
- p = head->next;
- head->next = head->next->next;
- free(p);
- p = NULL;
- printf("\n");
- return 1;
- }
- }
- int add_list(node *head,int i,int k,int n)
- {
- if(i<0||i>n)
- {
- printf("输入节点位置有误\n");
- return 0;
- }
- else
- {
- node *p = NULL;
- int j;
-
- for(j=1;j<i;j++)
- {
- head = head->next;
- }
- p = head;
- head = head->next;
- p->next = (node *)malloc(sizeof(node));
- p->next->next = head;
- p->next->date = k;
- return 1;
- }
- }
复制代码
|
|