链表的基本操作(线性表)
题目:编写一个程序,创建一个单链表,需要完成以下要求1. 用户输入一组整数,以0作为结束标志,将这一组整数存放在链表中(0不存放),并打印该链表中的值。
2. 删除第5个元素,并打印删除后的结果。
3. 手动在内存释放掉该链表。
代码清单(请自觉完成后回复可见):
**** Hidden Message *****
下来看看学习学习
看哪看哪看哪 回复下来看看啊
我要看啊甲鱼哥哥好帅 gggggoood!!! 下载回去看看!!谢谢了!! 看看怎么写的 瞄一下,解迷茫! 好费劲的说
下来看看学习学习
look look{:5_91:} 谢谢,太感谢啦:P 太 感 谢 啦 看下代码 ~~~ :'(觉得数据结构蛮难的! 本帖最后由 思忆 于 2013-3-29 18:01 编辑
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>
//////////////////////////////////////////////////////////////////////////
#define STD struct std
#define MC (STD *)malloc(sizeof(STD))
//////////////////////////////////////////////////////////////////////////
struct std
{
int num;
double score;
struct std *next;
};
void *malloc();
STD *input();
STD *Delete(STD *temp);
//////////////////////////////////////////////////////////////////////////
void main()
{
int i=0;
char order;
STD *temp;
do
{
printf("命令介绍\ninput 输入 | delete 删除 | exit 退出\n请输入命令:");
scanf("%s",&order);
if (strcmp(order,"input") == 0)
{
temp = input();
i++;
}
else if (strcmp(order,"delete") == 0)
{
if (i != 0)
{
temp = Delete(temp);
}
else
{
printf("链表不存在!\n");
}
}
else if (strcmp(order,"exit") == 0)
{
break;
}
else
{
printf("输入错误!请重新输入!\n");
}
} while ( strcmp(order,"exit") != 0);
}
//////////////////////////////////////////////////////////////////////////
STD *input()
{
STD *head,*p1,*p2,*temp;
head= temp = p1 = MC;
printf("请输入学号:");
scanf("%d",&p1->num);
if ( p1->num != 0 && p1->num > 0 && p1->num < 9999)
{
while (p1->num != 0 && p1->num > 0 && p1->num < 9999)
{
printf("请输入成绩:");
scanf("%lf",&p1->score);
p2 = p1;
p1 = MC;
p2->next = p1;
printf("请输入学号:");
scanf("%d",&p1->num);
}
p2->next = NULL;
if (p2->num != 0 && p2->num > 0 && p2->num < 9999) //输入0,即为退出
{
do
{
printf("%d\t%5.1f\n",head->num,head->score);
head = head->next;
} while (head != NULL);
}
}
return temp;
}
STD *Delete(STD *temp)
{
int num,i=0;
STD *head,*p;
head = temp;
do
{
printf("%d\t%5.1f\n",head->num,head->score);
head = head->next;
} while (head != NULL);
printf("请输入删除对象:");
scanf("%d",&num);
p = head = temp;
if (num != 0 && num > 0 && num < 9999 )
{
while(head != NULL)
{
if (num == head->num)
{
if ( head == temp)
{
head = head->next;
free(p);
p = head;
break;
}
else
{
p->next = head->next;
free(head);
p = head = temp;
break;
}
}
else
{
if (i != 0)
{
p = p->next;
}
printf("没有输入的数字....\n");
head = head->next;
i++;
}
}
do
{
printf("%d\t%5.1f\n",head->num,head->score);
head = head->next;
} while (head != NULL);
}
return p;
}
谢谢分享!! ...无回帖,不论坛,这才是人道。 强烈支持楼主ing……:handshake