用C语言写一个连表 要有添加和删除功能,然后用SHELL写一个脚本并且执行它

[复制链接]
查看11 | 回复0 | 2007-5-13 17:30:51 | 显示全部楼层 |阅读模式
#include
/*线性链表实验*/#includetypedef char DataType;
/*此例中的数据类型采用字符类型*/typedef struct node{ DataType data;
struct node *next;}LNode;LNode *head;
/*head表示人为添加的头结点,head是全局变量,指向头结点*/void CreatBeforeLinkList()
/*用前插法建表,并逆置,参见算法2.7*/{ LNode *s,*p; char x; int z=1; head=(LNode *)malloc(sizeof(LNode)); head->next=NULL; p=head->next; printf("\n\t\t\t建立一个线性表"); printf("\n\t\t\t说明:请逐个输入字符,结束标记为'#'!\n"); while(z) { printf("\t\t\t输入:"); scanf("%c",&x); getchar(); if(x!='#') {s=(LNode *)malloc(sizeof(LNode));
s->data=x;
head->next=s; s->next=p; p=s; } else z=0;}s=head->next;head->next=NULL;
/*不申请新的空间,将已建立的链表逆置*/ while(s!=NULL) {p=s->next;s->next=head->next;head->next=s;s=p; }}int SearchLinkList(DataType x)
/*在线性表中查找值为x的数据元素*/
{
/*参见算法2.10*/ int n=1; LNode *p=head->next; if(p->next==NULL)printf("\n\t\t\t链表为空!\n"); while(p!=NULL&&p->data!=x) {p=p->next;n++;} if(!(p->next)){printf("\n\t\t\t值为%c的元素不存在!\n",x); return;} else printf("\t值为%c的是第%d号元素",x,n);}DataType GetfromLinkList(int i)
/*返回线性表中第i个元素的值*/{ LNode *p=head->next; int j=0; char a; if(p->next==NULL)printf("\n\t\t\t链表为空!\n"); if(inext&&jnext;j++; } a=p->data; return a; if(!(p->next)||j>i-1) {printf("\n\t\t不存在第%d个元素!");}}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行