#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode {
ElemType date;
struct LNode *next;
}linklist,*link;
/*构造链表*//////////////////////////////////////
void IinitList(link &L)
{
if(L)delete L;
L= (link)malloc(sizeof(LNode)) ;
if (!L) exit(1);
L->next=NULL;
printf("链表已经建立\n");
}
//////////////////////////////////////////////////////
// /*删除结点*/// //////////////////////////////////////////////
int listdelete(link &L,int i,ElemType &e)
{
link p,q; int j;
p=L;j=0;
while(p->next&&j<i-1)
{
p=p->next;++j;
}
q=p->next;
p->next=q->next;
e=q->date;free(q);
printf("结点已经删除\n");
return 1;
}
////////////////////////////////////////////// /////////
// /*插入结点*/////////////// ///////////////////////
int listinsert(link &L,int i,ElemType e)
{
link p,q;
int j;
p=L;j=0;
while(p&&j<i-1)
{
p=p->next;++j;
}
q= (link)malloc(sizeof(LNode));
q->date=e;
q->next=p->next;
p->next=q;
return 1;
}
/////////////////////////////////////////////////////
////*显示数据*///////// ////////////////////////////////
void show(link l)
{ link p; int j;
p=l;j=0;
printf("链表的值为:\n");
while(p->next)
{
printf("%d\n",p->next->date);
p=p->next;
}
}
//////////////////////// /////////////////////////////////
//////销毁链表////// ////////////////////////////////////////
void destorylinst(link &L)
{
while(L)
{ link p=L;
L=L->next;
free(p) ;
}
L=NULL;
}
////// 打印表头///////////////////////////////////////
void print()
{
printf("------------------------\n");
printf("------------------------\n");
}
void putline(link &l)
{
if(l==NULL ||l->next==NULL )
printf("链表未建立或是空的,请先构造链表\n" );
else{
link p,q;
p=l->next;
while(p!=NULL)
{ q=p->next;
while(q!=NULL)
{
if(p->date>q->date)
{ ElemType t;
t=p->date;
p->date=q->date;
q->date=t; }
q=q->next;
} p=p->next;
} printf("链表已经排序 \n");
}
}
//////测试函数///// /////////////////////
void main()
{ link L=NULL; int k;
while(1)
{
printf("按0退出\n按1建立链表\n按2插入结点\n按3删除结点\n按4清空链表\n") ;
print();
int a,i,j;
scanf("%d",&a);
switch(a)
{ case 0: if(L!=NULL)
destorylinst(L) ;
exit(1);
case 1:
IinitList(L);
k=0;
printf("链表长度为:%d \n",k);
print();
printf("请输入值,输入0 结束\n");
int bb;
scanf("%d",&bb);
while(bb!=0)
{ k++;
listinsert(L,k,bb) ;
scanf("%d",&bb);
} printf("结点已经插入\n");
print(); putline(L);
show(L) ; printf("链表长度为:%d \n",k);
print();break;
case 2:
if(L!=NULL)
{
printf("输入植;\n");
scanf("%d",&j);
listinsert(L,0,j) ; putline(L);
k++;
print();
show(L);
printf("链表长度为:%d\n",k);
print();
}else
{ printf("链表不存在,请先建链表\n");
print(); }break;
case 3:
if(L!=NULL)
{
printf("输入位置:\n");
scanf("%d",&i);
while(i>k || i<1)
{
printf("位置错误,重新输入删除位置\n") ;
scanf("%d",&i);
}
listdelete (L,i,j);
printf("你删除的是:\n");
printf("%d\n",j) ;
k--; print();
show(L);
printf("链表长度为:%d\n",k);
print();
}
else {
printf("链表不存在,请先建链表\n");
print();
} break;
case 4:
destorylinst(L) ;
printf("链表已经清空\n");
print();break;
}
}
delete L;
}
温馨提示:内容为网友见解,仅供参考
用C语言编程,数据结构题 要快!答的好再加更多悬赏
include <stdio.h> include <stdlib.h> typedef int ElemType;typedef struct LNode { ElemType date;struct LNode *next;}linklist,*link;\/*构造链表*\/\/\/ void IinitList(link &L){ if(L)delete L;L= (link)malloc(sizeof(LNode)) ;if (!L) exit(1);L->next=NULL;printf("链表已...
一份C语言的数据结构题目,急求答案
第一题;Search (BiTree t,ElemType x){ struct nodee;{BiTree pp;int tag;}s[100];int top; Bitree p;top=0; p=t;while(p!=NULL&&p->p!=NULL){while(p!=NULL&&p->data!=x){top++;s[top].pp=p;s[top].tag=0;p=p->lchild;} if(p!=NULL&&p->data==x){for(i=1...
马上期末了老师让教c语言大作业...不知道怎么办了..满意后 再追加30分...
数据结构,算法都有现成的下载,或者标准里都包含了,你百度一下STL,还有函数 QUICKSORT,这两个直接在C++标准里面就有,也就是说只要包含了头文件,直接可以用的,瞬间就解决了前面两个问题吧?排序甚至都不用自己来,直接用map,把总成绩作为排序的键值,你插入的时候自动就给你排好序了 然后再学习...
请教高人指导:C语言及数据结构题?小弟在此先谢过!
createbintree(&t);\/\/建树 preorder(t);\/\/打印刚刚建的树 BINTREE t=NULL;\/\/定义树指针
数据结构问题。。。c语言
voidprintN(int n);\/\/把函数代码放在main后面,就需要加申明语句,像这样把申明语句写在函数体外面,下面所有的函数都可以调用这个函数。int main(){ 。。printN(N)。。。} void printN(int n){。。。} 3、include <stdio.h> int main(){ 。。。voidprintN(int n);\/\/也可以把申...
求C语言大神帮忙,一道数据结构题,删除单链表中最大和次最大的数,感激...
include <stdio.h>#define elemType int#define status int#define OVERFLOW -1#define ERROR 0#define OK 1\/* 单链表数据结构 *\/typedef struct lNode {elemType data;struct lNode *next;} lNode, *linkList;\/*** 以下为函数声明 ***\/void initList (linkList *L);\/* 初始化 *\/status ...
悬赏,急。编程达人请进。帮帮忙解释一下这个C语言数据结构的函数...
1、定义新链表c,用于存放结果 2、取多项式a的头结点qa,qa->next为a的第一项。3、对b进行同样操作得到b第一项地址qb->next。4、a的每一项与b的每一项都做运算,两个多项式相乘的结果存入c while(qa->next != 0)\/\/遍历a { while(qb->next != 0)\/\/遍历b { 系数相乘 幂相加 存入c...
跪求数据结构 c语言程序的每段加上注释。。 注释啊 注释!!!
end:printf("\\n");} \/\/打印排序好地数组 void prntar(int *a,int b2,int len){ int i;printf(" 已排序: \\n");for(i=0;i<b2;i++)printf(" ");for(i=b2;i<=len;i++)printf("%d ",a[i]);printf("\\n");} int main(){ int a[50];int i;int tmp;...
数据结构 课程设计C语言版 本人现..跪求一道课程设计答案 有哪..位的...
数据结构 课程设计C语言版 本人现..跪求一道课程设计答案 有哪..位的大仙帮帮我,现在只能给100分,完了追 题目:职工工资管理系统(编号、姓名、年龄、性别、基础工资、补贴工资、扣除工资、总工资){密码启动、修改模块、数据输入模块、数据插入模块、数据统计模块(分别统计基础工资、补贴... 题目:职工工资管理系统...
c语言数据结构题,请问哪出错了?(可能是void addpolyn(polynomail &Pa...
对了,楼主,是void addpolyn(polynomail &Pa,polynomail &Pb)出错,当pa的幂小于pb时应该把pb插入pa前面(反之同理),pb下移,你刚好搞反,改了再试试 你的程序看起来很吃力,我没全部看完,addpolyn最后一句,既然pa为空哪来的pa->next?