不胜感激!
13 个解决方案
#1
其实前面有很多人问链表的程序,叫大家帮忙改错的,你把修改以后的程序复制下来就可以了阿
#2
课本上有的是啊!
你随便拿两个来看看不就得了?
你随便拿两个来看看不就得了?
#3
潭浩强的那本书中就有
#4
http://community.csdn.net/Expert/topic/3859/3859538.xml?temp=.1191522
这里有一个链表的程序,它有一点错误,我在下面写出了修改方法,简单改一下就可以了
这里有一个链表的程序,它有一点错误,我在下面写出了修改方法,简单改一下就可以了
#5
这是前几天做的用链表实现数组元素的插入
其他的稍改一下应该就可以了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct LNode
{
int data;
LNode *next;
};
void Del(LNode *str)
{
LNode *tmp;
while(str)
{
tmp=str;
free(str);
str=tmp->next;
}
}
LNode* CreateList_L( int n)
{
LNode *p,*L;
int i;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
for (i=n; i>0; --i)
{
p = (LNode *)malloc(sizeof(LNode));
p->data =rand()%200;
p->next = L->next;
L->next = p;
}
return L;
}
int main()
{
int num=0;
LNode *list=NULL;
scanf("%d", &num);
list=CreateList_L( num);
while(list)
{
printf("%d ",list->data);
list=list->next;
}
Del(list);
system("PAUSE");
return 0;
}
其他的稍改一下应该就可以了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct LNode
{
int data;
LNode *next;
};
void Del(LNode *str)
{
LNode *tmp;
while(str)
{
tmp=str;
free(str);
str=tmp->next;
}
}
LNode* CreateList_L( int n)
{
LNode *p,*L;
int i;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
for (i=n; i>0; --i)
{
p = (LNode *)malloc(sizeof(LNode));
p->data =rand()%200;
p->next = L->next;
L->next = p;
}
return L;
}
int main()
{
int num=0;
LNode *list=NULL;
scanf("%d", &num);
list=CreateList_L( num);
while(list)
{
printf("%d ",list->data);
list=list->next;
}
Del(list);
system("PAUSE");
return 0;
}
#6
无语。
#7
我今天才看过这一部分 等晚上我再给你弄上来哈
#8
呵呵
楼主
到数据结构书上去找啊
很多啊
到处都是啊
这样别人给你发东西也没有用啊
要自己体会啊
不然看了也白看啊
楼主
到数据结构书上去找啊
很多啊
到处都是啊
这样别人给你发东西也没有用啊
要自己体会啊
不然看了也白看啊
#9
/*建立一个n个结点的环形双向链表*/
#include<stdio.h>
struct node
{
char data ;
struct node*llink,*rlink ;
}
;
typedef struct node NODE ;
NODE*head ;
/*插入数据y在x之后*/
int insert_d_l(head,x,y)
NODE*head ;
char x,y ;
{
NODE*p,*q ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
q=(NODE*)malloc(sizeof(NODE));
q->data=y ;
q->rlink=p->rlink ;
p->rlink=q ;
q->rlink->llink=q ;
q->llink=p ;
return(0);
}
/*删除值为x的结点*/
int delet_d_l(head,x)
NODE*head ;
char x ;
{
NODE*p ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
p->llink->rlink=p->rlink ;
p->rlink->llink=p->llink ;
free(p);
return(0);
}
NODE*creat_d_l(n)
int n ;
{
int i ;
NODE*head,*p,*q ;
if(n==0)return(NULL);
head=(NODE*)malloc(sizeof(NODE));
p=head ;
for(i=0;i<n;i++)
{
scanf("%c",&(p->data));
q=(NODE*)malloc(sizeof(NODE));
q->llink=p ;
p->rlink=q ;
p=q ;
}
scanf("%c",&(p->data));
getchar();
p->rlink=head ;
head->llink=p ;
return(head);
}
/*从左向右输出队列*/
void r_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(left->right):");
while(p->rlink!=head)
{
printf("%c",p->data);
p=p->rlink ;
}
printf("%c\n",p->data);
}
/*从右向左输出队列*/
void l_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(right->left):");
while(p->llink!=head)
{
printf("%c",p->data);
p=p->llink ;
}
printf("%c\n",p->data);
}
main()
{
int length,k=1,step ;
char a,b ;
printf("length=:");
scanf("%d",&length);
head=creat_d_l(length);
while(k)
{
printf("1--insert\n2--delet:\n");
scanf("%d",&step);
switch(step)
{
case 1 :
printf("Input the insert position:");
scanf("%s",&a);
printf("Input the insert data:");
scanf("%s",&b);
insert_d_l(head,a,b);
r_output (head);
l_output (head);
break ;
case 2 :
printf("Input the delet data:");
scanf("%s",&a);
delet_d_l(head,a);
r_output (head);
l_output (head);
break ;
}
printf("1--continue\n0--exit:\n");
scanf("%d",&k);
}
}
以前写的一个环型双向链表的程序,现在看来不够精简,楼主看看还行不??
#include<stdio.h>
struct node
{
char data ;
struct node*llink,*rlink ;
}
;
typedef struct node NODE ;
NODE*head ;
/*插入数据y在x之后*/
int insert_d_l(head,x,y)
NODE*head ;
char x,y ;
{
NODE*p,*q ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
q=(NODE*)malloc(sizeof(NODE));
q->data=y ;
q->rlink=p->rlink ;
p->rlink=q ;
q->rlink->llink=q ;
q->llink=p ;
return(0);
}
/*删除值为x的结点*/
int delet_d_l(head,x)
NODE*head ;
char x ;
{
NODE*p ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
p->llink->rlink=p->rlink ;
p->rlink->llink=p->llink ;
free(p);
return(0);
}
NODE*creat_d_l(n)
int n ;
{
int i ;
NODE*head,*p,*q ;
if(n==0)return(NULL);
head=(NODE*)malloc(sizeof(NODE));
p=head ;
for(i=0;i<n;i++)
{
scanf("%c",&(p->data));
q=(NODE*)malloc(sizeof(NODE));
q->llink=p ;
p->rlink=q ;
p=q ;
}
scanf("%c",&(p->data));
getchar();
p->rlink=head ;
head->llink=p ;
return(head);
}
/*从左向右输出队列*/
void r_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(left->right):");
while(p->rlink!=head)
{
printf("%c",p->data);
p=p->rlink ;
}
printf("%c\n",p->data);
}
/*从右向左输出队列*/
void l_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(right->left):");
while(p->llink!=head)
{
printf("%c",p->data);
p=p->llink ;
}
printf("%c\n",p->data);
}
main()
{
int length,k=1,step ;
char a,b ;
printf("length=:");
scanf("%d",&length);
head=creat_d_l(length);
while(k)
{
printf("1--insert\n2--delet:\n");
scanf("%d",&step);
switch(step)
{
case 1 :
printf("Input the insert position:");
scanf("%s",&a);
printf("Input the insert data:");
scanf("%s",&b);
insert_d_l(head,a,b);
r_output (head);
l_output (head);
break ;
case 2 :
printf("Input the delet data:");
scanf("%s",&a);
delet_d_l(head,a);
r_output (head);
l_output (head);
break ;
}
printf("1--continue\n0--exit:\n");
scanf("%d",&k);
}
}
以前写的一个环型双向链表的程序,现在看来不够精简,楼主看看还行不??
#10
呵呵,顶一下
#11
我们交流交流呀,这是我门老师个的程序你看看
/*线性表的顺序表示 */
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 20
#define TRUE 1
#define FALSE 0
#define SPECIAL -1
typedef int DataType;
struct Seqlist
{
DataType element[MAXNUM]; /*存放在线性表中的元素*/
int n; /*存放在线性表中的元素的个数n<MAXNUM*/
};
typedef struct Seqlist *PSeqList;
PSeqList createNUlllist_seq(void)
{
PSeqList palist;
palist=(PSeqList)malloc(sizeof(struct Seqlist));
if(palist!=NULL)
palist->n=0; /*空表长度为零*/
else
printf("Out of spalistce!!\n"); /*存储分配失败*/
return (palist);
}
int insert_seq(PSeqList palist, int p, DataType x) /*在palist所指的顺序表中下标为p的元素之前插入元素*/
{ int q;
if(palist->n==MAXNUM)
{ printf("OverFlow!!\n"); /*溢出*/
return(FALSE);
}
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{ printf("Not exist!!\n");
return(FALSE);
}
for(q=palist->n-1;q>=p;q--) /*插入位置及以后的元素均后移一个位置*/
palist->element[q+1]=palist->element[q];
palist->element[p]=x; /*插入元素x*/
palist->n=palist->n+1; /*元素个数加 1 */
return (TRUE);
}
int deleteSeq(PSeqList palist,int p ) /*在palist所指的顺序表中删除下标为p的元素*/
{ int q;
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{
printf("Not exist!!\n");
return(FALSE);
}
for(q=p;q<palist->n-1;q++) /*被删除元素以后的元素均前移一个位置*/
palist->element[q]=palist->element[q+1];
palist->n=palist->n-1; /*元素个数减 1 */
return (TRUE);
}
int locate_seq(PSeqList palist,DataType x) /* 求x在 palist中所指顺序表中下标*/
{
int q;
for(q=0;q<palist->n;q++)
if(palist->element[q]==x)
return(q);
return(-1);
}
DataType retrieve_seq(PSeqList palist,int p)/*palist中所指顺序表中下标为p的元素值*/
{
if(p>=0&&p<palist->n) /*存在下标为p的元素*/
return(palist->element[p]);
printf("Not exist!!\n");
return(SPECIAL); /*返回一个顺序表中没有的特殊值*/
}
int isNulllist_seq(PSeqList palist)
{
return(palist->n==0);
}
void printseqlist(PSeqList palist)
{ int i;
for(i=0;i<=palist->n-1;i++)
printf("%4d", palist->element[i]);
printf("\n");
}
int main()
{ return 0; }
/*线性表的顺序表示 */
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 20
#define TRUE 1
#define FALSE 0
#define SPECIAL -1
typedef int DataType;
struct Seqlist
{
DataType element[MAXNUM]; /*存放在线性表中的元素*/
int n; /*存放在线性表中的元素的个数n<MAXNUM*/
};
typedef struct Seqlist *PSeqList;
PSeqList createNUlllist_seq(void)
{
PSeqList palist;
palist=(PSeqList)malloc(sizeof(struct Seqlist));
if(palist!=NULL)
palist->n=0; /*空表长度为零*/
else
printf("Out of spalistce!!\n"); /*存储分配失败*/
return (palist);
}
int insert_seq(PSeqList palist, int p, DataType x) /*在palist所指的顺序表中下标为p的元素之前插入元素*/
{ int q;
if(palist->n==MAXNUM)
{ printf("OverFlow!!\n"); /*溢出*/
return(FALSE);
}
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{ printf("Not exist!!\n");
return(FALSE);
}
for(q=palist->n-1;q>=p;q--) /*插入位置及以后的元素均后移一个位置*/
palist->element[q+1]=palist->element[q];
palist->element[p]=x; /*插入元素x*/
palist->n=palist->n+1; /*元素个数加 1 */
return (TRUE);
}
int deleteSeq(PSeqList palist,int p ) /*在palist所指的顺序表中删除下标为p的元素*/
{ int q;
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{
printf("Not exist!!\n");
return(FALSE);
}
for(q=p;q<palist->n-1;q++) /*被删除元素以后的元素均前移一个位置*/
palist->element[q]=palist->element[q+1];
palist->n=palist->n-1; /*元素个数减 1 */
return (TRUE);
}
int locate_seq(PSeqList palist,DataType x) /* 求x在 palist中所指顺序表中下标*/
{
int q;
for(q=0;q<palist->n;q++)
if(palist->element[q]==x)
return(q);
return(-1);
}
DataType retrieve_seq(PSeqList palist,int p)/*palist中所指顺序表中下标为p的元素值*/
{
if(p>=0&&p<palist->n) /*存在下标为p的元素*/
return(palist->element[p]);
printf("Not exist!!\n");
return(SPECIAL); /*返回一个顺序表中没有的特殊值*/
}
int isNulllist_seq(PSeqList palist)
{
return(palist->n==0);
}
void printseqlist(PSeqList palist)
{ int i;
for(i=0;i<=palist->n-1;i++)
printf("%4d", palist->element[i]);
printf("\n");
}
int main()
{ return 0; }
#12
555555555555555555
抢分的真多
抢分的真多
#13
我也给一个吧,这两天我们学数据结构,搞了两下链表,我的是弱智形的,楼主见笑了!
#include <stdio.h>
#include <stdlib.h>
typedef struct node *link;
struct node {
long id;
float score;
link next;
};
main()
{
int i;
link head=NULL;
link pre=NULL,cur;
for (i=0; i<10; i++) {
cur=(link) malloc (sizeof *cur);
if (head==NULL) head=cur;
else pre->next=cur;
cur->next=NULL;
scanf("%ld",&cur->id);
pre=cur;
}
cur=head;
while (cur) {
scanf("%f",&cur->score);
cur=cur->next;
}
cur=head;
while (cur) {
printf("%ld %f ",cur->id,cur->score);
cur=cur->next;
}
}
只建立了一个链表,什么都没做,也没释放!
#include <stdio.h>
#include <stdlib.h>
typedef struct node *link;
struct node {
long id;
float score;
link next;
};
main()
{
int i;
link head=NULL;
link pre=NULL,cur;
for (i=0; i<10; i++) {
cur=(link) malloc (sizeof *cur);
if (head==NULL) head=cur;
else pre->next=cur;
cur->next=NULL;
scanf("%ld",&cur->id);
pre=cur;
}
cur=head;
while (cur) {
scanf("%f",&cur->score);
cur=cur->next;
}
cur=head;
while (cur) {
printf("%ld %f ",cur->id,cur->score);
cur=cur->next;
}
}
只建立了一个链表,什么都没做,也没释放!
#1
其实前面有很多人问链表的程序,叫大家帮忙改错的,你把修改以后的程序复制下来就可以了阿
#2
课本上有的是啊!
你随便拿两个来看看不就得了?
你随便拿两个来看看不就得了?
#3
潭浩强的那本书中就有
#4
http://community.csdn.net/Expert/topic/3859/3859538.xml?temp=.1191522
这里有一个链表的程序,它有一点错误,我在下面写出了修改方法,简单改一下就可以了
这里有一个链表的程序,它有一点错误,我在下面写出了修改方法,简单改一下就可以了
#5
这是前几天做的用链表实现数组元素的插入
其他的稍改一下应该就可以了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct LNode
{
int data;
LNode *next;
};
void Del(LNode *str)
{
LNode *tmp;
while(str)
{
tmp=str;
free(str);
str=tmp->next;
}
}
LNode* CreateList_L( int n)
{
LNode *p,*L;
int i;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
for (i=n; i>0; --i)
{
p = (LNode *)malloc(sizeof(LNode));
p->data =rand()%200;
p->next = L->next;
L->next = p;
}
return L;
}
int main()
{
int num=0;
LNode *list=NULL;
scanf("%d", &num);
list=CreateList_L( num);
while(list)
{
printf("%d ",list->data);
list=list->next;
}
Del(list);
system("PAUSE");
return 0;
}
其他的稍改一下应该就可以了
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct LNode
{
int data;
LNode *next;
};
void Del(LNode *str)
{
LNode *tmp;
while(str)
{
tmp=str;
free(str);
str=tmp->next;
}
}
LNode* CreateList_L( int n)
{
LNode *p,*L;
int i;
L = (LNode *)malloc(sizeof(LNode));
L->next = NULL;
for (i=n; i>0; --i)
{
p = (LNode *)malloc(sizeof(LNode));
p->data =rand()%200;
p->next = L->next;
L->next = p;
}
return L;
}
int main()
{
int num=0;
LNode *list=NULL;
scanf("%d", &num);
list=CreateList_L( num);
while(list)
{
printf("%d ",list->data);
list=list->next;
}
Del(list);
system("PAUSE");
return 0;
}
#6
无语。
#7
我今天才看过这一部分 等晚上我再给你弄上来哈
#8
呵呵
楼主
到数据结构书上去找啊
很多啊
到处都是啊
这样别人给你发东西也没有用啊
要自己体会啊
不然看了也白看啊
楼主
到数据结构书上去找啊
很多啊
到处都是啊
这样别人给你发东西也没有用啊
要自己体会啊
不然看了也白看啊
#9
/*建立一个n个结点的环形双向链表*/
#include<stdio.h>
struct node
{
char data ;
struct node*llink,*rlink ;
}
;
typedef struct node NODE ;
NODE*head ;
/*插入数据y在x之后*/
int insert_d_l(head,x,y)
NODE*head ;
char x,y ;
{
NODE*p,*q ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
q=(NODE*)malloc(sizeof(NODE));
q->data=y ;
q->rlink=p->rlink ;
p->rlink=q ;
q->rlink->llink=q ;
q->llink=p ;
return(0);
}
/*删除值为x的结点*/
int delet_d_l(head,x)
NODE*head ;
char x ;
{
NODE*p ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
p->llink->rlink=p->rlink ;
p->rlink->llink=p->llink ;
free(p);
return(0);
}
NODE*creat_d_l(n)
int n ;
{
int i ;
NODE*head,*p,*q ;
if(n==0)return(NULL);
head=(NODE*)malloc(sizeof(NODE));
p=head ;
for(i=0;i<n;i++)
{
scanf("%c",&(p->data));
q=(NODE*)malloc(sizeof(NODE));
q->llink=p ;
p->rlink=q ;
p=q ;
}
scanf("%c",&(p->data));
getchar();
p->rlink=head ;
head->llink=p ;
return(head);
}
/*从左向右输出队列*/
void r_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(left->right):");
while(p->rlink!=head)
{
printf("%c",p->data);
p=p->rlink ;
}
printf("%c\n",p->data);
}
/*从右向左输出队列*/
void l_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(right->left):");
while(p->llink!=head)
{
printf("%c",p->data);
p=p->llink ;
}
printf("%c\n",p->data);
}
main()
{
int length,k=1,step ;
char a,b ;
printf("length=:");
scanf("%d",&length);
head=creat_d_l(length);
while(k)
{
printf("1--insert\n2--delet:\n");
scanf("%d",&step);
switch(step)
{
case 1 :
printf("Input the insert position:");
scanf("%s",&a);
printf("Input the insert data:");
scanf("%s",&b);
insert_d_l(head,a,b);
r_output (head);
l_output (head);
break ;
case 2 :
printf("Input the delet data:");
scanf("%s",&a);
delet_d_l(head,a);
r_output (head);
l_output (head);
break ;
}
printf("1--continue\n0--exit:\n");
scanf("%d",&k);
}
}
以前写的一个环型双向链表的程序,现在看来不够精简,楼主看看还行不??
#include<stdio.h>
struct node
{
char data ;
struct node*llink,*rlink ;
}
;
typedef struct node NODE ;
NODE*head ;
/*插入数据y在x之后*/
int insert_d_l(head,x,y)
NODE*head ;
char x,y ;
{
NODE*p,*q ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
q=(NODE*)malloc(sizeof(NODE));
q->data=y ;
q->rlink=p->rlink ;
p->rlink=q ;
q->rlink->llink=q ;
q->llink=p ;
return(0);
}
/*删除值为x的结点*/
int delet_d_l(head,x)
NODE*head ;
char x ;
{
NODE*p ;
p=head->rlink ;
while(p!=head&&p->data!=x)
p=p->rlink ;
if(p==head)return(1);
p->llink->rlink=p->rlink ;
p->rlink->llink=p->llink ;
free(p);
return(0);
}
NODE*creat_d_l(n)
int n ;
{
int i ;
NODE*head,*p,*q ;
if(n==0)return(NULL);
head=(NODE*)malloc(sizeof(NODE));
p=head ;
for(i=0;i<n;i++)
{
scanf("%c",&(p->data));
q=(NODE*)malloc(sizeof(NODE));
q->llink=p ;
p->rlink=q ;
p=q ;
}
scanf("%c",&(p->data));
getchar();
p->rlink=head ;
head->llink=p ;
return(head);
}
/*从左向右输出队列*/
void r_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(left->right):");
while(p->rlink!=head)
{
printf("%c",p->data);
p=p->rlink ;
}
printf("%c\n",p->data);
}
/*从右向左输出队列*/
void l_output (head)
NODE *head ;
{
NODE *p ;
p=head ;
printf("The link is(right->left):");
while(p->llink!=head)
{
printf("%c",p->data);
p=p->llink ;
}
printf("%c\n",p->data);
}
main()
{
int length,k=1,step ;
char a,b ;
printf("length=:");
scanf("%d",&length);
head=creat_d_l(length);
while(k)
{
printf("1--insert\n2--delet:\n");
scanf("%d",&step);
switch(step)
{
case 1 :
printf("Input the insert position:");
scanf("%s",&a);
printf("Input the insert data:");
scanf("%s",&b);
insert_d_l(head,a,b);
r_output (head);
l_output (head);
break ;
case 2 :
printf("Input the delet data:");
scanf("%s",&a);
delet_d_l(head,a);
r_output (head);
l_output (head);
break ;
}
printf("1--continue\n0--exit:\n");
scanf("%d",&k);
}
}
以前写的一个环型双向链表的程序,现在看来不够精简,楼主看看还行不??
#10
呵呵,顶一下
#11
我们交流交流呀,这是我门老师个的程序你看看
/*线性表的顺序表示 */
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 20
#define TRUE 1
#define FALSE 0
#define SPECIAL -1
typedef int DataType;
struct Seqlist
{
DataType element[MAXNUM]; /*存放在线性表中的元素*/
int n; /*存放在线性表中的元素的个数n<MAXNUM*/
};
typedef struct Seqlist *PSeqList;
PSeqList createNUlllist_seq(void)
{
PSeqList palist;
palist=(PSeqList)malloc(sizeof(struct Seqlist));
if(palist!=NULL)
palist->n=0; /*空表长度为零*/
else
printf("Out of spalistce!!\n"); /*存储分配失败*/
return (palist);
}
int insert_seq(PSeqList palist, int p, DataType x) /*在palist所指的顺序表中下标为p的元素之前插入元素*/
{ int q;
if(palist->n==MAXNUM)
{ printf("OverFlow!!\n"); /*溢出*/
return(FALSE);
}
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{ printf("Not exist!!\n");
return(FALSE);
}
for(q=palist->n-1;q>=p;q--) /*插入位置及以后的元素均后移一个位置*/
palist->element[q+1]=palist->element[q];
palist->element[p]=x; /*插入元素x*/
palist->n=palist->n+1; /*元素个数加 1 */
return (TRUE);
}
int deleteSeq(PSeqList palist,int p ) /*在palist所指的顺序表中删除下标为p的元素*/
{ int q;
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{
printf("Not exist!!\n");
return(FALSE);
}
for(q=p;q<palist->n-1;q++) /*被删除元素以后的元素均前移一个位置*/
palist->element[q]=palist->element[q+1];
palist->n=palist->n-1; /*元素个数减 1 */
return (TRUE);
}
int locate_seq(PSeqList palist,DataType x) /* 求x在 palist中所指顺序表中下标*/
{
int q;
for(q=0;q<palist->n;q++)
if(palist->element[q]==x)
return(q);
return(-1);
}
DataType retrieve_seq(PSeqList palist,int p)/*palist中所指顺序表中下标为p的元素值*/
{
if(p>=0&&p<palist->n) /*存在下标为p的元素*/
return(palist->element[p]);
printf("Not exist!!\n");
return(SPECIAL); /*返回一个顺序表中没有的特殊值*/
}
int isNulllist_seq(PSeqList palist)
{
return(palist->n==0);
}
void printseqlist(PSeqList palist)
{ int i;
for(i=0;i<=palist->n-1;i++)
printf("%4d", palist->element[i]);
printf("\n");
}
int main()
{ return 0; }
/*线性表的顺序表示 */
#include<stdio.h>
#include<stdlib.h>
#define MAXNUM 20
#define TRUE 1
#define FALSE 0
#define SPECIAL -1
typedef int DataType;
struct Seqlist
{
DataType element[MAXNUM]; /*存放在线性表中的元素*/
int n; /*存放在线性表中的元素的个数n<MAXNUM*/
};
typedef struct Seqlist *PSeqList;
PSeqList createNUlllist_seq(void)
{
PSeqList palist;
palist=(PSeqList)malloc(sizeof(struct Seqlist));
if(palist!=NULL)
palist->n=0; /*空表长度为零*/
else
printf("Out of spalistce!!\n"); /*存储分配失败*/
return (palist);
}
int insert_seq(PSeqList palist, int p, DataType x) /*在palist所指的顺序表中下标为p的元素之前插入元素*/
{ int q;
if(palist->n==MAXNUM)
{ printf("OverFlow!!\n"); /*溢出*/
return(FALSE);
}
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{ printf("Not exist!!\n");
return(FALSE);
}
for(q=palist->n-1;q>=p;q--) /*插入位置及以后的元素均后移一个位置*/
palist->element[q+1]=palist->element[q];
palist->element[p]=x; /*插入元素x*/
palist->n=palist->n+1; /*元素个数加 1 */
return (TRUE);
}
int deleteSeq(PSeqList palist,int p ) /*在palist所指的顺序表中删除下标为p的元素*/
{ int q;
if(p<0||p>palist->n) /*不存在下标为p的元素*/
{
printf("Not exist!!\n");
return(FALSE);
}
for(q=p;q<palist->n-1;q++) /*被删除元素以后的元素均前移一个位置*/
palist->element[q]=palist->element[q+1];
palist->n=palist->n-1; /*元素个数减 1 */
return (TRUE);
}
int locate_seq(PSeqList palist,DataType x) /* 求x在 palist中所指顺序表中下标*/
{
int q;
for(q=0;q<palist->n;q++)
if(palist->element[q]==x)
return(q);
return(-1);
}
DataType retrieve_seq(PSeqList palist,int p)/*palist中所指顺序表中下标为p的元素值*/
{
if(p>=0&&p<palist->n) /*存在下标为p的元素*/
return(palist->element[p]);
printf("Not exist!!\n");
return(SPECIAL); /*返回一个顺序表中没有的特殊值*/
}
int isNulllist_seq(PSeqList palist)
{
return(palist->n==0);
}
void printseqlist(PSeqList palist)
{ int i;
for(i=0;i<=palist->n-1;i++)
printf("%4d", palist->element[i]);
printf("\n");
}
int main()
{ return 0; }
#12
555555555555555555
抢分的真多
抢分的真多
#13
我也给一个吧,这两天我们学数据结构,搞了两下链表,我的是弱智形的,楼主见笑了!
#include <stdio.h>
#include <stdlib.h>
typedef struct node *link;
struct node {
long id;
float score;
link next;
};
main()
{
int i;
link head=NULL;
link pre=NULL,cur;
for (i=0; i<10; i++) {
cur=(link) malloc (sizeof *cur);
if (head==NULL) head=cur;
else pre->next=cur;
cur->next=NULL;
scanf("%ld",&cur->id);
pre=cur;
}
cur=head;
while (cur) {
scanf("%f",&cur->score);
cur=cur->next;
}
cur=head;
while (cur) {
printf("%ld %f ",cur->id,cur->score);
cur=cur->next;
}
}
只建立了一个链表,什么都没做,也没释放!
#include <stdio.h>
#include <stdlib.h>
typedef struct node *link;
struct node {
long id;
float score;
link next;
};
main()
{
int i;
link head=NULL;
link pre=NULL,cur;
for (i=0; i<10; i++) {
cur=(link) malloc (sizeof *cur);
if (head==NULL) head=cur;
else pre->next=cur;
cur->next=NULL;
scanf("%ld",&cur->id);
pre=cur;
}
cur=head;
while (cur) {
scanf("%f",&cur->score);
cur=cur->next;
}
cur=head;
while (cur) {
printf("%ld %f ",cur->id,cur->score);
cur=cur->next;
}
}
只建立了一个链表,什么都没做,也没释放!