/*单链表的初始化*/
LinkedList LinkedListInit() {
Node *L;
L = (Node *)malloc(sizeof(Node)); /*申请结点空间*/
if(L == NULL) /*判断是否有足够的内存空间*/ printf(\申请内存空间失败\\n\
L->next = NULL; /*将next设置为NULL,初始长度为0的单链表*/ return L; }
/*单链表的建立2,尾插法建立单链表*/
LinkedList LinkedListCreatT() {
Node *L,*r;
int x;
L = (Node *)malloc(sizeof(Node)); /*申请头结点空间 */ L->next = NULL; /*初始化一个空链表 */
r = L; /*r始终指向终端结点,开始时指向头结点*/
while(scanf(\ {
Node *p;
p = (Node *)malloc(sizeof(Node)); /*申请新的结点 */ p->data = x; /*结点数据域赋值 */
r->next = p; /*将结点插入到表头L-->|1|-->|2|-->NULL */ r = p; }
r->next = NULL;
return L; }
/*单链表的插入,在链表的第i个位置插入x的元素*/
LinkedList LinkedListInsert(LinkedList L,int i,ElemType x) {
Node *pre;
int tempi; /*pre为前驱结点*/ Node *p; pre = L;
for (tempi = 1; tempi < i; tempi++)
pre = pre->next; /*查找第i个位置的前驱结点*/ /*插入的结点为p*/ p = (Node *)malloc(sizeof(Node)); p->data = x;
p->next = pre->next; pre->next = p;
return L; }
/*单链表的删除,在链表中删除值为x的元素*/
LinkedList LinkedListDelete(LinkedList L,ElemType x) {
Node *p,*pre; /* pre为前驱结点,p为查找的结点*/ p = L->next;
while(p->data != x) /* 查找值为x的元素 */ {
pre = p; p = p->next; }
pre->next = p->next; /* 删除操作,将其前驱next指向其后继。*/ free(p); return L; }
int GetElem_L(LinkedList L, int i, ElemType e) {
/*L是带头结点的链表的头指针,以 e 返回第 i 个元素 */
Node *p; int j;
p = L->next; j = 1; /* p指向第一个结点,j为计数器 */
while (p && jnext; ++j; }
/* 顺指针向后查找,直到 p 指向第 i 个元素 */ /* 或 p 为空(P=最后一个元素内的指针域值)*/
if ( !p || j>i )
return 0; /* 第 i 个元素不存在 */
e = p->data; /* 取得第 i 个元素 return e; }
int main() { int i,e1;
ElemType x,e;
LinkedList list,start;
printf(\ list = LinkedListCreatT();
for(start = list->next; start != NULL; start = start->next) printf(\ printf(\
printf(\ scanf(\
printf(\ scanf(\
LinkedListInsert(list,i,x);
for(start = list->next; start != NULL; start = start->next) printf(\ printf(\
printf(\ scanf(\
LinkedListDelete(list,x);
for(start = list->next; start != NULL; start = start->next) */
printf(\ printf(\
e1=GetElem_L(list, 5, e) ;
printf(\ getch(); return 0; }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据结构实验指导书——线性表的操作(2)在线全文阅读。
相关推荐: