设计一个处理单向链表的程序:对链表插入和删除操作

问题描述:(1)建立单向链表,每个结点包括:学号(int),姓名(charname[]),性别(char)。(2)将一个新的结点插入到链表中某一个结点之后。(3)查找某一... 问题描述:
(1)建立单向链表,每个结点包括:学号(int),姓名(char name[]),性别(char)。
(2)将一个新的结点插入到链表中某一个结点之后。
(3)查找某一个结点将其从链表中删除。
(4)输出处理过的链表。在主函数中分别调用创建、插入、删除和输出函数。

我悲剧的C++~~~请高手帮忙~~~TAT
c/c++都行。。。最好是c++。。。
最好有注释。。。
谢谢~~~~~~~~~

dalookzhu的答案编译有错误。。。OTZ。。。
但还是谢谢你~~~~
展开
 我来答
dalookzhu
2010-01-05 · TA获得超过276个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:287万
展开全部
不是吧!!我这是C语言啊!你是不是用C++了?
http://hi.baidu.com/dalookzhu/blog/item/9d2e6a4585bdf8348794730a.html
这里有

下面是我重新写的,符合你要求的:
#include<stdio.h>
#include<stdlib.h>

struct info
{
int number;
char name[20];
char sex[10];
struct info *next;
};

void insert(struct info **start)
{
struct info* pre;
struct info* newone;
struct info* cur;
newone=malloc(sizeof(struct info));
if (newone==NULL)
printf("insert falied.\n");
else
{
printf("enter the information.\n");
scanf("%d%s%s",&newone->number,newone->name,newone->sex);
pre = NULL;
cur = *start;
newone->next = NULL;
while ((cur!=NULL)&&(newone->number>cur->number))
{
pre = cur;
cur = cur->next;
}
if (pre==NULL)
{
newone->next = *start;
*start = newone;
}
else
{
pre->next = newone;
newone->next = cur;
}
}
}

void del(struct info **start)
{
struct info *temp;
struct info *pre;
struct info *cur;
int value;
printf("enter the number.\n");
scanf("%d",&value);
cur = (*start)->next;
pre = *start;
if (*start==NULL)
printf("no information for you to delete");
else
{
if ((*start)->number==value)
{
if (pre->number==value)
{
temp = *start;
*start = (*start)->next;
free(temp);
}
}
else
{
while ((cur->number!=value)&&(cur!=NULL))
{
pre = cur;
cur = cur->next;
}
if (cur==NULL)
printf("no information for you to delete");
else
{
temp = cur;
pre->next = cur->next;
free(temp);
}
}
}
}

void print(struct info *start)
{
if (start==NULL)
printf("no information to print.\n");
else
{
printf("\n\n\n%-20s%-20s%-20s\n","number","name","sex");
do
{
printf("%-20d%-20s%-20s\n",start->number,start->name,start->sex);
start = start->next;
}while(start!=NULL);
}
printf("\n\n\n\n");
}

int main()
{
struct info* start=NULL;
int choice;
printf("enter 1 to insert new information.\nenter 2 to delete information.\nenter 3 to print information.\nenter -999 to end.\n");
scanf("%d",&choice);
while(choice!=-999)
{
if (choice==1)
insert(&start);
else if (choice==2)
del(&start);
else if (choice==3)
print(start);
else
printf("wrong enter.\n");
printf("enter 1 to insert new information.\nenter 2 to delete information.\nenter 3 to print information.\nenter -999 to end.\n");
scanf("%d",&choice);
}

return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式